소스 검색

Update dialogue_manager: add new method: build_active_greeting_config

StrayWarrior 6 달 전
부모
커밋
5ec5114179
1개의 변경된 파일32개의 추가작업 그리고 1개의 파일을 삭제
  1. 32 1
      dialogue_manager.py

+ 32 - 1
dialogue_manager.py

@@ -1,11 +1,13 @@
 #! /usr/bin/env python
 #! /usr/bin/env python
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
 # vim:fenc=utf-8
 # vim:fenc=utf-8
-
+import random
 from enum import Enum, auto
 from enum import Enum, auto
 from typing import Dict, List, Optional, Tuple, Any
 from typing import Dict, List, Optional, Tuple, Any
 from datetime import datetime
 from datetime import datetime
 import time
 import time
+
+import prompt_templates
 from logging_service import logger
 from logging_service import logger
 
 
 import pymysql.cursors
 import pymysql.cursors
@@ -572,6 +574,35 @@ class DialogueManager:
                 last_message_role, aggregated_message, ChatServiceType.COZE_CHAT))
                 last_message_role, aggregated_message, ChatServiceType.COZE_CHAT))
         return messages
         return messages
 
 
+    def build_active_greeting_config(self):
+        # FIXME: 这里的抽象不好
+        chat_config = {'user_id': self.user_id}
+        prompt_context = self.get_prompt_context(None)
+
+        current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
+        system_message = {'role': 'system', 'content': 'You are a helpful AI assistant.'}
+        # TODO: 随机选择一个prompt 或 带策略选择 或根据用户标签选择
+        # TODO:需要区分用户是否有历史交互、是否发送过相似内容
+        greeting_prompts = [
+            prompt_templates.GREETING_WITH_IMAGE_GAME,
+            prompt_templates.GREETING_WITH_NAME_POETRY,
+            prompt_templates.GREETING_WITH_AVATAR_STORY
+        ]
+        selected_prompt = greeting_prompts[random.randint(0, len(greeting_prompts) - 1)]
+        prompt = selected_prompt.format(**prompt_context)
+        user_message = {'role': 'user', 'content': prompt}
+        messages = [system_message, user_message]
+        if selected_prompt == prompt_templates.GREETING_WITH_AVATAR_STORY:
+            messages.append({
+                "role": 'user',
+                "content": [
+                    {"type": "image_url", "image_url": {"url": self.user_profile['avatar']}}
+                ]
+            })
+            chat_config['use_multimodal_model'] = True
+        chat_config['messages'] = messages
+        return chat_config
+
     def build_chat_configuration(
     def build_chat_configuration(
             self,
             self,
             user_message: Optional[str] = None,
             user_message: Optional[str] = None,