对话API是DB-GPT提供的统一的对话接口,可以通过对话接口分别与多种大模型,多种应用场景进行对话。 当前DB-GPT支持的所有模型都可以通过对话API进行对话。此外也支持多种对话场景,如:

  • 普通对话 - ChatNormal
  • 应用对话 - ChatAPP
  • 知识库对话 - ChatKnowledge
  • 工作流对话 - ChatFlow

默认对话模式是普通对话,即直接与大语言模型进行交流。

这里我们来介绍一些对话API的具体使用。接口地址如下:

  1. POST /api/v2/chat/completions

调用案例

Curl调用

  1. DBGPT_API_KEY="dbgpt"
  2. curl -X POST "http://localhost:5670/api/v2/chat/completions" \
  3. -H "Authorization: Bearer $DBGPT_API_KEY" \
  4. -H "accept: application/json" \
  5. -H "Content-Type: application/json" \
  6. -d "{\"messages\":\"Hello\",\"model\":\"chatgpt_proxyllm\", \"stream\": true}"

Python SDK样例

流式对话

创建一个chat.py 文件,输入如下代码

  1. import asyncio
  2. from dbgpt.client import Client
  3. DBGPT_API_KEY = "dbgpt"
  4. client = Client(api_key=DBGPT_API_KEY)
  5. async def chat():
  6. async for data in client.chat_stream(
  7. model="proxyllm",
  8. messages="hello",
  9. ):
  10. print(data.choices[0].delta.content)
  11. if __name__ == "__main__":
  12. asyncio.run(chat())

如果你使用Notebook,可以直接使用如下代码:

  1. from dbgpt.client import Client
  2. DBGPT_API_KEY="dbgpt"
  3. client = Client(api_key=DBGPT_API_KEY)
  4. async for data in client.chat_stream(
  5. model="proxyllm",
  6. messages="hello"
  7. ):
  8. print(data.choices)

对话API - 图1

非流式对话

  1. from dbgpt.client import Client
  2. DBGPT_API_KEY = "dbgpt"
  3. client = Client(api_key=DBGPT_API_KEY)
  4. response = await client.chat(model="proxyllm" ,messages="hello")

请求响应

  1. {
  2. "id": "a8321543-52e9-47a5-a0b6-3d997463f6a3",
  3. "object": "chat.completion",
  4. "created": 1710826792,
  5. "model": "chatgpt_proxyllm",
  6. "choices": [
  7. {
  8. "index": 0,
  9. "message": {
  10. "role": "assistant",
  11. "content": "Hello! How can I assist you today?"
  12. },
  13. "finish_reason": null
  14. }
  15. ],
  16. "usage": {
  17. "prompt_tokens": 0,
  18. "total_tokens": 0,
  19. "completion_tokens": 0
  20. }
  21. }

参数说明

参数名 参数说明 是否必须
model 要对话的模型名称,具体的模型可以参考DB-GPT模型配置文件支持的模型列表。
+ proxyllm
+ zhipu_proxyllm
+ vicuna-13b
+ 更多模型
- [x] 是
messages 对话消息,包含历史对话记录 - [x] 是
chat_model DB-GPT对话模式,支持以下对话模式
+ chat_normal, 普通对话
+ chat_app,与应用对话
+ chat_knowledge, 与知识库对话
+ chat_flow,与流程对话
默认是普通对话
- [ ] 否
chat_param 在不同对话模式下,需要的对话参数, 如
+ app_id**
+ space_id
+ flow_id
默认值为空
- [ ] 否
max_new_tokens 最大Token数量,总长度受模型上下文长度的限制。 - [ ] 否
temperature 使用的温度, 参数值越小确定性越高,值越大输出随机性越大 - [ ] 否
<font style="color:rgb(28, 30, 33);">conv_uid</font> 模型对话的推理ID,默认是None - [ ] 否
span_id 模型推理的span_id, 默认是None - [ ] 否
sys_code 系统码,默认值是None - [ ] 否
user_name 用户名,默认值是None - [ ] 否

流式响应参数

参数 参数描述 备注
id 对话id,例如:902b51f2-be4a-42ba-b318-5b4567a33666
model 对话模型
created 创建聊天完成时的Unix时间戳
choices python [ index: 0, delta:{ role, content, finish_reason } ]

非流式响应参数

参数 参数描述 备注
id 对话id,例如:902b51f2-be4a-42ba-b318-5b4567a33666
model 对话模型
created 创建聊天完成时的Unix时间戳
object object=’chat.completion’
choices python [ index: 0, delta:{ role, content, finish_reason } ]
usage + prompt_tokens
+ total_tokens
+ completion_tokens

附录