聊天客户端消息创建方法实现

ChatClient.create_chat_message 方法详解

这个代码定义了一个名为 create_chat_message 的方法,属于 ChatClient 类(继承自 DifyClient)。该方法用于向聊天API发送消息并获取响应。

方法功能

该方法主要功能是:

  1. 构建聊天消息请求的数据结构
  2. 根据参数决定使用流式响应还是阻塞式响应
  3. 将请求发送到服务器

参数解释

  • inputs: 对话的输入内容(通常是上下文或提示信息)
  • query: 用户当前的问题或消息
  • user: 用户标识
  • response_mode: 响应模式,可以是"blocking"(阻塞式)或"streaming"(流式)
  • conversation_id: 可选参数,对话ID用于继续之前的对话
  • files: 可选参数,上传的文件

方法实现细节

  1. 首先构建一个包含基本信息的字典 data
  2. 如果有 conversation_id,则添加到 data
  3. 调用 _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())

注意事项

  1. _send_request 是父类 DifyClient 提供的方法,实际网络请求由它完成
  2. 流式响应(streaming mode)时返回的是一个可迭代对象,需要逐个处理数据块
  3. 阻塞式响应(blocking mode)会等待完整响应后才返回
  4. 实际使用时需要先实例化 ChatClient 并配置好API基础URL和认证信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值