对话API是DB-GPT提供的统一的对话接口,可以通过对话接口分别与多种大模型,多种应用场景进行对话。 当前DB-GPT支持的所有模型都可以通过对话API进行对话。此外也支持多种对话场景,如:
- 普通对话 - ChatNormal
- 应用对话 - ChatAPP
- 知识库对话 - ChatKnowledge
- 工作流对话 - ChatFlow
默认对话模式是普通对话,即直接与大语言模型进行交流。
这里我们来介绍一些对话API的具体使用。接口地址如下:
POST /api/v2/chat/completions
调用案例
Curl调用
DBGPT_API_KEY="dbgpt"
curl -X POST "http://localhost:5670/api/v2/chat/completions" \
-H "Authorization: Bearer $DBGPT_API_KEY" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d "{\"messages\":\"Hello\",\"model\":\"chatgpt_proxyllm\", \"stream\": true}"
Python SDK样例
流式对话
创建一个chat.py
文件,输入如下代码
import asyncio
from dbgpt.client import Client
DBGPT_API_KEY = "dbgpt"
client = Client(api_key=DBGPT_API_KEY)
async def chat():
async for data in client.chat_stream(
model="proxyllm",
messages="hello",
):
print(data.choices[0].delta.content)
if __name__ == "__main__":
asyncio.run(chat())
如果你使用Notebook,可以直接使用如下代码:
from dbgpt.client import Client
DBGPT_API_KEY="dbgpt"
client = Client(api_key=DBGPT_API_KEY)
async for data in client.chat_stream(
model="proxyllm",
messages="hello"
):
print(data.choices)
非流式对话
from dbgpt.client import Client
DBGPT_API_KEY = "dbgpt"
client = Client(api_key=DBGPT_API_KEY)
response = await client.chat(model="proxyllm" ,messages="hello")
请求响应
{
"id": "a8321543-52e9-47a5-a0b6-3d997463f6a3",
"object": "chat.completion",
"created": 1710826792,
"model": "chatgpt_proxyllm",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?"
},
"finish_reason": null
}
],
"usage": {
"prompt_tokens": 0,
"total_tokens": 0,
"completion_tokens": 0
}
}
参数说明
参数名 | 参数说明 | 是否必须 |
---|---|---|
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 |