yj
2025-07-28 69945b730fd3f6b6138ce50e49fc3392fcd74d71
app/services/dify_client.py
@@ -28,6 +28,7 @@
        user: str,
        conversation_id: Optional[str] = None,
        max_retries: int = None,
        nick_name: Optional[str] = None,
    ) -> Optional[Dict[str, Any]]:
        """
        发送对话消息(非流式模式)
@@ -37,6 +38,7 @@
            user: 用户标识
            conversation_id: 会话ID(可选)
            max_retries: 最大重试次数
            nick_name: 昵称(可选,用于传递给dify)
        Returns:
            响应数据字典,失败返回None
@@ -45,11 +47,17 @@
            max_retries = settings.max_retry_count
        url = f"{self.base_url}/chat-messages"
        # 构建inputs参数
        inputs = {}
        if nick_name:
            inputs["nick_name"] = nick_name
        payload = {
            "query": query,
            "response_mode": "blocking",  # 使用阻塞模式(非流式)
            "user": user,
            "inputs": {},
            "inputs": inputs,
        }
        # 如果有会话ID,添加到请求中
@@ -105,6 +113,7 @@
        user: str,
        conversation_id: Optional[str] = None,
        max_retries: int = None,
        nick_name: Optional[str] = None,
    ) -> Optional[Dict[str, Any]]:
        """
        发送对话消息(流式模式)
@@ -114,6 +123,7 @@
            user: 用户标识
            conversation_id: 会话ID(可选)
            max_retries: 最大重试次数
            nick_name: 昵称(可选,用于传递给dify)
        Returns:
            完整的响应数据字典,失败返回None
@@ -122,11 +132,17 @@
            max_retries = settings.max_retry_count
        url = f"{self.base_url}/chat-messages"
        # 构建inputs参数
        inputs = {}
        if nick_name:
            inputs["nick_name"] = nick_name
        payload = {
            "query": query,
            "response_mode": "streaming",  # 使用流式模式
            "user": user,
            "inputs": {},
            "inputs": inputs,
        }
        # 如果有会话ID,添加到请求中
@@ -384,6 +400,7 @@
        conversation_id: Optional[str] = None,
        max_retries: int = None,
        force_streaming: Optional[bool] = None,
        nick_name: Optional[str] = None,
    ) -> Optional[Dict[str, Any]]:
        """
        发送对话消息(根据配置选择模式)
@@ -394,6 +411,7 @@
            conversation_id: 会话ID(可选)
            max_retries: 最大重试次数
            force_streaming: 强制使用流式模式(可选,覆盖配置)
            nick_name: 昵称(可选,用于传递给dify)
        Returns:
            响应数据字典,失败返回None
@@ -403,10 +421,10 @@
        if use_streaming:
            logger.info(f"使用流式模式发送消息: user={user}")
            return self.send_chat_message_stream(query, user, conversation_id, max_retries)
            return self.send_chat_message_stream(query, user, conversation_id, max_retries, nick_name)
        else:
            logger.info(f"使用阻塞模式发送消息: user={user}")
            return self.send_chat_message(query, user, conversation_id, max_retries)
            return self.send_chat_message(query, user, conversation_id, max_retries, nick_name)
    def get_conversation_messages(
        self, conversation_id: str, user: str