ChatClient.create_chat_message 方法详解
这个代码定义了一个名为 create_chat_message
的方法,属于 ChatClient
类(继承自 DifyClient
)。该方法用于向聊天API发送消息并获取响应。
方法功能
该方法主要功能是:
- 构建聊天消息请求的数据结构
- 根据参数决定使用流式响应还是阻塞式响应
- 将请求发送到服务器
参数解释
inputs
: 对话的输入内容(通常是上下文或提示信息)query
: 用户当前的问题或消息user
: 用户标识response_mode
: 响应模式,可以是"blocking"(阻塞式)或"streaming"(流式)conversation_id
: 可选参数,对话ID用于继续之前的对话files
: 可选参数,上传的文件
方法实现细节
- 首先构建一个包含基本信息的字典
data
- 如果有
conversation_id
,则添加到data
中 - 调用
_send_request
方法发送请求:- 使用POST方法
- 发送到"/chat-messages"端点
- 根据
response_mode
决定是否使用流式响应
示例使用
示例1:简单的阻塞式聊天
client = ChatClient()
response = client.create_chat_message(
inputs={"prompt": "你是一个有帮助的助手"},
query="你好,今天天气怎么样?",
user="user123",
response_mode="blocking"
)
print(response.json()) # 获取并打印JSON响应
示例2:带对话ID的流式聊天
client = ChatClient()
# 继续之前的对话
for chunk in client.create_chat_message(
inputs={},
query="我之前问过关于天气的问题,你还记得吗?",
user="user123",
response_mode="streaming",
conversation_id="conv_abc123"
):
print(chunk) # 处理流式响应的每个数据块
示例3:带文件的聊天
client = ChatClient()
# 上传文件并询问相关问题
response = client.create_chat_message(
inputs={},
query="请总结这份文档的主要内容",
user="user123",
files=[("file", open("report.pdf", "rb"))]
)
print(response.json())
注意事项
_send_request
是父类DifyClient
提供的方法,实际网络请求由它完成- 流式响应(
streaming
mode)时返回的是一个可迭代对象,需要逐个处理数据块 - 阻塞式响应(
blocking
mode)会等待完整响应后才返回 - 实际使用时需要先实例化
ChatClient
并配置好API基础URL和认证信息