当然,以下是针对你提供的API层 和Service层 代码中涉及到的各个接口,如何使用 Postman 进行详细测试的指南。这个指南将帮助你理解如何配置 Postman 来测试这些接口,包括请求的构造、认证的处理、以及如何解读响应。
目录
- 准备工作
- 接口测试指南
- 2.1 POST
/chat/completions
- 2.2 GET
/chat/app/list
- 2.3 GET
/chat/history
- 2.4 DELETE
/chat/{chat_id}
- 2.5 POST
/chat/message
- 2.6 PUT
/chat/message/{message_id}
- 2.7 DELETE
/chat/message/{message_id}
- 2.8 POST
/liked
- 2.9 POST
/chat/copied
- 2.10 POST
/chat/comment
- 2.11 GET
/chat/list
- 2.12 GET
/chat/online
- 2.13 WebSocket
/chat/{flow_id}
- 2.14 POST
/build/init/{flow_id}
- 2.15 GET
/build/{flow_id}/status
- 2.16 GET
/build/stream/{flow_id}
- 2.1 POST
- 常见问题与解决方案
- 总结
1. 准备工作
在开始测试之前,请确保以下条件满足:
- 后端服务已启动 :确保你的 FastAPI 应用正在运行,并监听相应的端口(如
127.0.0.1:8000
或127.0.0.1:7860
)。 - Postman 安装 :确保你已经安装了最新版本的 Postman,可以从 Postman 官网 下载。
- 获取 JWT 认证令牌:大多数接口依赖于 JWT 认证。你需要先通过登录接口(假设存在)获取一个有效的 JWT 令牌,或者根据代码中的逻辑生成一个。
获取 JWT 认证令牌
假设你有一个登录接口,如 POST /api/login
,用于获取 JWT 令牌。以下是获取令牌的步骤:
-
创建登录请求:
-
方法:POST
-
URL :
http://127.0.0.1:8000/api/login
(请根据实际情况调整端口) -
Headers
:
Content-Type
:application/json
-
Body
(选择
raw
并选择
JSON
格式):
json{ "username": "your_username", "password": "your_password" }
-
-
发送请求 :点击
Send
按钮发送请求。 -
获取响应:
-
如果登录成功,你将收到一个包含 JWT 令牌的响应,例如:
json{ "access_token": "your_jwt_token", "token_type": "bearer" }
-
记录下
access_token
,稍后在其他请求中使用。
-
注意:如果没有登录接口,你需要根据项目中的认证逻辑手动生成或获取一个有效的 JWT 令牌。
2. 接口测试指南
以下是针对每个接口的详细测试步骤,包括如何配置 Postman 请求、所需的参数和示例响应。
2.1 POST /chat/completions
描述:该接口用于处理聊天完成请求,返回实时流式响应。
方法 :POST
URL :http://127.0.0.1:8000/api/v1/chat/completions
Headers:
Authorization
:Bearer your_jwt_token
Content-Type
:application/json
Body (选择 raw
并选择 JSON
格式):
json
{
"messages": [
{
"role": "user",
"content": "Hello, how are you?"
}
],
"model": "gpt-4",
"session_id": "optional_session_id",
"streaming": true
}
测试步骤:
-
打开 Postman,创建一个新的
POST
请求。 -
设置 URL 为
http://127.0.0.1:8000/api/v1/chat/completions
。 -
在
Headers
标签下,添加以下键值对:
Authorization
:Bearer your_jwt_token
Content-Type
:application/json
-
在
Body
标签下,选择raw
,然后选择JSON
格式,粘贴上面的 JSON。 -
点击
Send
按钮发送请求。
预期响应:
由于返回的是 StreamingResponse
,Postman 可能无法完全显示流式响应。建议使用支持 WebSocket 或 SSE 的客户端工具,如 Postman 的 Event Source 或其他专用工具。
2.2 GET /chat/app/list
描述:通过消息表进行聊天App统计,全量表查询,支持关键词、标记用户、标记状态等筛选。
方法 :GET
URL :http://127.0.0.1:8000/api/v1/chat/app/list
Headers:
Authorization
:Bearer your_jwt_token
参数(可选,通过 URL 查询参数):
keyword
(字符串):搜索关键词mark_user
(字符串):标记用户mark_status
(整数):标记状态task_id
(整数):任务IDpage_num
(整数,默认1):页码page_size
(整数,默认20):每页数量
示例请求:
http://127.0.0.1:8000/api/v1/chat/app/list?keyword=chat&mark_status=1&page_num=1&page_size=10
测试步骤:
-
创建一个新的
GET
请求。 -
设置 URL 为
http://127.0.0.1:8000/api/v1/chat/app/list
,并添加查询参数(如上例)。 -
在
Headers
标签下,添加:
Authorization
:Bearer your_jwt_token
-
点击
Send
发送请求。
预期响应:
json
{
"code": 200,
"message": "成功",
"data": {
"list": [
{
"user_name": "John Doe",
"flow_name": "ChatFlow",
"flow_type": "flow",
"other_fields": "..."
},
// 更多记录...
],
"total": 50
}
}
2.3 GET /chat/history
描述:获取指定聊天的历史消息。
方法 :GET
URL :http://127.0.0.1:8000/api/v1/chat/history
Headers:
Authorization
:Bearer your_jwt_token
参数(通过 URL 查询参数):
chat_id
(字符串,必填):聊天IDflow_id
(字符串,必填):流IDid
(字符串,可选):用于分页,获取ID小于指定值的消息page_size
(整数,默认20):每页数量
示例请求:
http://127.0.0.1:8000/api/v1/chat/history?chat_id=chat123&flow_id=flow456&page_size=10
测试步骤:
-
创建一个新的
GET
请求。 -
设置 URL 为
http://127.0.0.1:8000/api/v1/chat/history
,并添加必要的查询参数。 -
在
Headers
标签下,添加:
Authorization
:Bearer your_jwt_token
-
点击
Send
发送请求。
预期响应:
json
{
"code": 200,
"message": "成功",
"data": [
{
"id": 1,
"flow_id": "flow456",
"chat_id": "chat123",
"user_id": 1,
"is_bot": false,
"message": "Hello!",
"type": "human",
"category": "question",
"create_time": "2024-04-27T12:34:56",
"update_time": "2024-04-27T12:35:00"
},
// 更多消息...
]
}
2.4 DELETE /chat/{chat_id}
描述:删除指定聊天记录及相关数据。
方法 :DELETE
URL :http://127.0.0.1:8000/api/v1/chat/{chat_id}
示例 :http://127.0.0.1:8000/api/v1/chat/chat123
Headers:
Authorization
:Bearer your_jwt_token
测试步骤:
-
创建一个新的
DELETE
请求。 -
设置 URL 为
http://127.0.0.1:8000/api/v1/chat/chat123
(将chat123
替换为实际的chat_id
)。 -
在
Headers
标签下,添加:
Authorization
:Bearer your_jwt_token
-
点击
Send
发送请求。
预期响应:
json
{
"code": 200,
"message": "删除成功"
}
2.5 POST /chat/message
描述:添加一条完整的问答记录,包括用户的提问和机器人的回答。
方法 :POST
URL :http://127.0.0.1:8000/api/v1/chat/message
Headers:
Authorization
:Bearer your_jwt_token
Content-Type
:application/json
Body (选择 raw
并选择 JSON
格式):
json
{
"flow_id": "flow456",
"chat_id": "chat123",
"human_message": "What is the weather today?",
"answer_message": "The weather today is sunny with a high of 25°C."
}
测试步骤:
-
创建一个新的
POST
请求。 -
设置 URL 为
http://127.0.0.1:8000/api/v1/chat/message
。 -
在
Headers
标签下,添加:
Authorization
:Bearer your_jwt_token
Content-Type
:application/json
-
在
Body
标签下,选择raw
,然后选择JSON
格式,粘贴上面的 JSON。 -
点击
Send
发送请求。
预期响应:
json
{
"code": 200,
"message": "添加成功"
}
2.6 PUT /chat/message/{message_id}
描述:更新指定消息的内容。
方法 :PUT
URL :http://127.0.0.1:8000/api/v1/chat/message/{message_id}
示例 :http://127.0.0.1:8000/api/v1/chat/message/1
Headers:
Authorization
:Bearer your_jwt_token
Content-Type
:application/json
Body (选择 raw
并选择 JSON
格式):
json
{
"message": "Updated message content."
}
测试步骤:
-
创建一个新的
PUT
请求。 -
设置 URL 为
http://127.0.0.1:8000/api/v1/chat/message/1
(将1
替换为实际的message_id
)。 -
在
Headers
标签下,添加:
Authorization
:Bearer your_jwt_token
Content-Type
:application/json
-
在
Body
标签下,选择raw
,然后选择JSON
格式,粘贴上面的 JSON。 -
点击
Send
发送请求。
预期响应:
json
{
"code": 200,
"message": "更新成功"
}
2.7 DELETE /chat/message/{message_id}
描述:删除指定的消息。
方法 :DELETE
URL :http://127.0.0.1:8000/api/v1/chat/message/{message_id}
示例 :http://127.0.0.1:8000/api/v1/chat/message/1
Headers:
Authorization
:Bearer your_jwt_token
测试步骤:
-
创建一个新的
DELETE
请求。 -
设置 URL 为
http://127.0.0.1:8000/api/v1/chat/message/1
(将1
替换为实际的message_id
)。 -
在
Headers
标签下,添加:
Authorization
:Bearer your_jwt_token
-
点击
Send
发送请求。
预期响应:
json
{
"code": 200,
"message": "删除成功"
}
2.8 POST /liked
描述:为指定消息添加点赞状态。
方法 :POST
URL :http://127.0.0.1:8000/api/v1/liked
Headers:
Authorization
:Bearer your_jwt_token
Content-Type
:application/json
Body (选择 raw
并选择 JSON
格式):
json
{
"message_id": 1,
"liked": true
}
测试步骤:
-
创建一个新的
POST
请求。 -
设置 URL 为
http://127.0.0.1:8000/api/v1/liked
。 -
在
Headers
标签下,添加:
Authorization
:Bearer your_jwt_token
Content-Type
:application/json
-
在
Body
标签下,选择raw
,然后选择JSON
格式,粘贴上面的 JSON。 -
点击
Send
发送请求。
预期响应:
json
{
"code": 200,
"message": "操作成功"
}
2.9 POST /chat/copied
描述:更新指定消息的复制状态。
方法 :POST
URL :http://127.0.0.1:8000/api/v1/chat/copied
Headers:
Authorization
:Bearer your_jwt_token
Content-Type
:application/json
Body (选择 raw
并选择 JSON
格式):
json
{
"message_id": 1
}
测试步骤:
-
创建一个新的
POST
请求。 -
设置 URL 为
http://127.0.0.1:8000/api/v1/chat/copied
。 -
在
Headers
标签下,添加:
Authorization
:Bearer your_jwt_token
Content-Type
:application/json
-
在
Body
标签下,选择raw
,然后选择JSON
格式,粘贴上面的 JSON。 -
点击
Send
发送请求。
预期响应:
json
{
"code": 200,
"message": "操作成功"
}
2.10 POST /chat/comment
描述:为指定消息添加评论。
方法 :POST
URL :http://127.0.0.1:8000/api/v1/chat/comment
Headers:
Authorization
:Bearer your_jwt_token
Content-Type
:application/json
Body (选择 raw
并选择 JSON
格式):
json
{
"message_id": 1,
"comment": "Great response!"
}
测试步骤:
-
创建一个新的
POST
请求。 -
设置 URL 为
http://127.0.0.1:8000/api/v1/chat/comment
。 -
在
Headers
标签下,添加:
Authorization
:Bearer your_jwt_token
Content-Type
:application/json
-
在
Body
标签下,选择raw
,然后选择JSON
格式,粘贴上面的 JSON。 -
点击
Send
发送请求。
预期响应:
json
{
"code": 200,
"message": "操作成功"
}
2.11 GET /chat/list
描述:获取用户的聊天列表,包括每个聊天的最后一条消息和相关信息。
方法 :GET
URL :http://127.0.0.1:8000/api/v1/chat/list
Headers:
Authorization
:Bearer your_jwt_token
参数(通过 URL 查询参数):
page
(整数,默认1):页码limit
(整数,默认10):每页数量
示例请求:
http://127.0.0.1:8000/api/v1/chat/list?page=1&limit=10
测试步骤:
-
创建一个新的
GET
请求。 -
设置 URL 为
http://127.0.0.1:8000/api/v1/chat/list
,并添加必要的查询参数。 -
在
Headers
标签下,添加:
Authorization
:Bearer your_jwt_token
-
点击
Send
发送请求。
预期响应:
json
{
"code": 200,
"message": "成功",
"data": [
{
"flow_name": "ChatFlow",
"flow_description": "A flow for chatting",
"flow_id": "flow456",
"flow_type": "flow",
"chat_id": "chat123",
"logo": "http://example.com/logo.png",
"create_time": "2024-04-27T12:34:56",
"update_time": "2024-04-27T12:35:00",
"latest_message": {
"id": 2,
"flow_id": "flow456",
"chat_id": "chat123",
"user_id": 1,
"is_bot": true,
"message": "I'm good, thank you!",
"type": "bot",
"category": "answer",
"create_time": "2024-04-27T12:35:00",
"update_time": "2024-04-27T12:35:00"
}
},
// 更多聊天记录...
]
}
2.12 GET /chat/online
描述:获取所有已上线的技能和助手,支持关键词和标签筛选。
方法 :GET
URL :http://127.0.0.1:8000/api/v1/chat/online
Headers:
Authorization
:Bearer your_jwt_token
参数(通过 URL 查询参数):
keyword
(字符串,可选):搜索关键词tag_id
(整数,可选):标签IDpage
(整数,默认1):页码limit
(整数,默认10):每页数量
示例请求:
http://127.0.0.1:8000/api/v1/chat/online?keyword=assistant&tag_id=2&page=1&limit=10
测试步骤:
-
创建一个新的
GET
请求。 -
设置 URL 为
http://127.0.0.1:8000/api/v1/chat/online
,并添加必要的查询参数。 -
在
Headers
标签下,添加:
Authorization
:Bearer your_jwt_token
-
点击
Send
发送请求。
预期响应:
json
{
"code": 200,
"message": "成功",
"data": [
{
"id": "flow456",
"name": "AssistantFlow",
"desc": "An assistant flow",
"logo": "http://example.com/assistant_logo.png",
"count": 10,
"create_time": "2024-04-25T10:00:00",
"update_time": "2024-04-27T12:00:00",
"flow_type": "assistant"
},
// 更多记录...
]
}
2.13 WebSocket /chat/{flow_id}
描述:WebSocket端点,用于实时聊天功能。
方法 :WebSocket
URL :ws://127.0.0.1:7860/api/v1/chat/{flow_id}?chat_id={chat_id}&t={access_token}
参数:
flow_id
(路径参数):流IDchat_id
(查询参数,可选):聊天IDt
(查询参数,可选):JWT认证令牌
测试步骤:
Postman 支持 WebSocket 连接。以下是使用 Postman 测试 WebSocket 的步骤:
-
打开 Postman。
-
创建新的 WebSocket请求:
-
点击左上角的
New
按钮,选择WebSocket Request
。 -
输入 WebSocket URL,例如:
ws://127.0.0.1:7860/api/v1/chat/flow456?chat_id=chat123&t=your_jwt_token
替换
flow456
、
chat123
和
your_jwt_token
为实际值。
-
-
连接到 WebSocket:
- 点击
Connect
按钮建立连接。 - 连接成功后,Postman 会显示连接状态。
- 点击
-
发送消息:
-
在
Messages
面板中,输入要发送的消息。例如:
json{ "message": "Hello, how can I help you today?", "flow_id": "flow456", "chat_id": "chat123" }
-
点击
Send
发送消息。
-
-
接收响应:
- Postman 会在
Messages
面板中显示来自服务器的响应消息。
- Postman 会在
预期响应:
json
{
"type": "bot",
"message": "Hello! I'm here to assist you.",
"flow_id": "flow456",
"chat_id": "chat123",
"status": "init"
}
注意 :根据
chat/manager.py
中的逻辑,WebSocket 连接会处理接收到的消息,并通过ChatManager
返回相应的响应。响应的具体内容取决于后端的实现。
2.14 POST /build/init/{flow_id}
描述:初始化构建流程,存储图数据并返回唯一的会话ID。
方法 :POST
URL :http://127.0.0.1:8000/api/v1/chat/build/init/{flow_id}
示例 :http://127.0.0.1:8000/api/v1/chat/build/init/flow456
Headers:
Authorization
:Bearer your_jwt_token
Content-Type
:application/json
参数(通过路径参数和请求体):
flow_id
(路径参数,必填):流IDversion_id
(查询参数,可选):技能版本ID
Body (选择 raw
并选择 JSON
格式):
json
{
"chat_id": "chat123",
"other_graph_data_fields": "..."
}
测试步骤:
-
创建一个新的
POST
请求。 -
设置 URL 为
http://127.0.0.1:8000/api/v1/chat/build/init/flow456
,并根据需要添加查询参数(如version_id
)。 -
在
Headers
标签下,添加:
Authorization
:Bearer your_jwt_token
Content-Type
:application/json
-
在
Body
标签下,选择raw
,然后选择JSON
格式,粘贴上面的 JSON。 -
点击
Send
发送请求。
预期响应:
json
{
"code": 200,
"message": "成功",
"data": {
"flowId": "flow456"
}
}
2.15 GET /build/{flow_id}/status
描述:检查指定流ID的构建状态。
方法 :GET
URL :http://127.0.0.1:8000/api/v1/chat/build/{flow_id}/status
示例 :http://127.0.0.1:8000/api/v1/chat/build/flow456/status
Headers:
Authorization
:Bearer your_jwt_token
参数(通过路径参数和查询参数):
flow_id
(路径参数,必填):流IDchat_id
(查询参数,可选):聊天IDversion_id
(查询参数,可选):技能版本ID
测试步骤:
-
创建一个新的
GET
请求。 -
设置 URL 为
http://127.0.0.1:8000/api/v1/chat/build/flow456/status
,并根据需要添加查询参数(如chat_id
、version_id
)。 -
在
Headers
标签下,添加:
Authorization
:Bearer your_jwt_token
-
点击
Send
发送请求。
预期响应:
json
{
"code": 200,
"message": "成功",
"data": {
"built": true
}
}
2.16 GET /build/stream/{flow_id}
描述:基于存储的流数据,流式返回构建过程。
方法 :GET
URL :http://127.0.0.1:8000/api/v1/chat/build/stream/{flow_id}
示例 :http://127.0.0.1:8000/api/v1/chat/build/stream/flow456
Headers:
Authorization
:Bearer your_jwt_token
参数(通过路径参数和查询参数):
flow_id
(路径参数,必填):流IDchat_id
(查询参数,可选):聊天IDversion_id
(查询参数,可选):技能版本ID
测试步骤:
-
使用 Postman 的 Streaming 功能:
-
创建一个新的
GET
请求。 -
设置 URL 为
http://127.0.0.1:8000/api/v1/chat/build/stream/flow456
,并根据需要添加查询参数(如chat_id
、version_id
)。 -
在
Headers
标签下,添加:
Authorization
:Bearer your_jwt_token
-
点击
Send
按钮。
-
-
查看流式响应:
-
Postman 会以流式的方式显示响应数据,每当后端有新的数据发送时,Postman 会即时显示。
-
你会看到类似以下的响应块:
json{"event": "message", "data": {"input_keys": [...], "memory_keys": [...], "handle_keys": [...]}} {"event": "message", "data": {"end_of_stream": true}}
-
如果发生错误,可能会看到:
json{"event": "error", "data": {"error": "Error message"}}
-
预期响应:
-
构建进行中
:
json{"event": "message", "data": {"input_keys": [...], "memory_keys": [...], "handle_keys": [...]}}
-
构建完成
:
json{"event": "message", "data": {"end_of_stream": true}}
-
错误发生
:
json{"event": "error", "data": {"error": "具体错误信息"}}
注意:Postman 的 StreamingResponse 显示可能有限。如果需要更详细的流式数据监控,建议使用专用的工具或编写简单的 WebSocket/SSE 客户端。
3. 常见问题与解决方案
3.1 认证失败
问题 :请求返回 401 Unauthorized
或类似错误。
解决方案:
- 确保在
Authorization
头中包含有效的 JWT 令牌,格式为Bearer your_jwt_token
。 - 检查 JWT 令牌是否过期。
- 确认令牌生成时的
subject
和expires_time
是否正确。
3.2 WebSocket 连接问题
问题:
- 无法建立 WebSocket 连接。
- 发送消息后没有收到响应。
解决方案:
- 确认 WebSocket 端点 URL 正确,使用
ws://
或wss://
协议。 - 确保后端服务正在运行并监听正确的端口。
- 检查 JWT 令牌是否正确传递。
- 查看后端日志,确认是否有错误信息。
3.3 流式响应显示不完整
问题:Postman 无法正确显示流式响应。
解决方案:
- 确保使用支持流式响应的客户端工具。虽然 Postman 支持 WebSocket,但其对流式 HTTP 响应的支持有限。
- 考虑使用其他工具,如 cURL 或专用的 WebSocket/SSE 客户端。
- 在 Postman 中,确保请求的
Accept
头设置为text/event-stream
(如果适用)。
3.4 请求参数错误
问题 :API 返回 400 Bad Request
,提示参数错误。
解决方案:
- 检查请求中是否包含所有必填参数。
- 确认参数的类型和格式是否正确。例如,
chat_id
应为字符串,page_size
应为整数。 - 使用 JSON 验证工具,确保请求体的 JSON 格式正确。
4. 总结
通过以上详细的步骤和示例,你应该能够使用 Postman 测试项目中的各个接口,包括 RESTful API 和 WebSocket 端点。以下是一些关键点的回顾:
- 认证处理 :大多数接口依赖于 JWT 认证,确保在请求头中正确设置
Authorization
头。 - 请求构造:根据接口需求,正确设置请求方法、URL、参数、头和体。
- 流式响应 :对于返回
StreamingResponse
的接口,Postman 的支持有限,必要时使用更合适的工具。 - 错误处理:通过检查响应状态码和错误信息,快速定位和解决问题。
- 日志分析:在后端遇到问题时,通过日志可以帮助你快速找到问题根源。
进一步建议
- 自动化测试:考虑使用 Postman 的集合(Collections)和环境(Environments)功能,编写自动化测试脚本,提高测试效率。
- 文档生成:使用 OpenAPI(Swagger)自动生成 API 文档,方便测试和维护。
- 持续集成:将 Postman 测试集成到 CI/CD 流程中,确保每次代码变更后接口依然正常工作。
通过系统性的测试和持续的优化,你将能够确保项目中的各个接口功能稳定、可靠,并提供良好的用户体验。
多轮对话测试
在接口设计中,多轮对话一般指的是一个持续的聊天会话,其中用户和系统之间的交互是基于之前的对话上下文进行的。对于需要与后端进行多轮对话的接口测试,可以使用 Postman 来模拟这些交互过程,确保接口的正确性和响应。
以下是如何使用 Postman 测试支持多轮对话接口的步骤:
1. 理解接口请求结构
首先,需要了解多轮对话接口的设计。比如,你提到的 /chat/completions
接口,通过 messages
字段发送对话内容。通常这些请求会包括以下字段:
messages
: 传递每轮对话的消息列表,通常包括当前消息以及之前的消息(上下文)。session_id
: 标识会话的唯一 ID,保证多轮对话的连续性。model
: 用来标识当前对话使用的模型,可能是 OpenAI 或自定义的模型。streaming
: 是否支持流式返回数据。
2. 使用 Postman 测试多轮对话的流程
步骤 1: 创建一个新的会话(获取 session_id
)
大部分多轮对话系统会通过 session_id
来标识会话,如果你没有现成的 session_id
,可以尝试:
- 发送一个初始的聊天请求 (比如
/chat/completions
),但不包括任何历史消息,或者只传递第一轮对话的消息。通常,系统会自动生成一个新的session_id
。
例如,发送一个请求:
json
{
"model": "chat-model-v1",
"messages": [
{
"role": "user",
"content": "你好,系统!"
}
]
}
响应中通常会返回一个新的 session_id
,比如:
json
{
"session_id": "12345abcde"
}
步骤 2: 使用 session_id
进行多轮对话
一旦获得了 session_id
,你可以使用它来进行后续的多轮对话。每次发送请求时,除了当前的用户消息,还需要带上 session_id
,以保证对话的连续性。
例如:
json
{
"session_id": "12345abcde",
"model": "chat-model-v1",
"messages": [
{
"role": "user",
"content": "请告诉我关于人工智能的简介"
}
]
}
响应可能会是:
json
{
"model": "chat-model-v1",
"messages": [
{
"role": "system",
"content": "人工智能(AI)是模拟人类智能的技术..."
}
]
}
步骤 3: 继续对话(发送多轮消息)
基于上一步的响应,你可以继续发送新的消息。记得每次都带上 session_id
,系统会利用历史消息来生成基于上下文的回答。
例如:
json
{
"session_id": "12345abcde",
"model": "chat-model-v1",
"messages": [
{
"role": "user",
"content": "人工智能的应用有哪些?"
}
]
}
响应示例:
json
{
"model": "chat-model-v1",
"messages": [
{
"role": "system",
"content": "人工智能有广泛的应用,包括自动驾驶、语音识别、推荐系统等..."
}
]
}
步骤 4: 测试流式返回(如果适用)
如果该接口支持流式返回(streaming=true
),你可以通过设置 streaming=true
来测试如何接收实时数据。流式返回通常会将消息分成多个部分逐步返回,可以模拟实时聊天过程。
例如,使用 Postman 的流式请求:
json
{
"session_id": "12345abcde",
"model": "chat-model-v1",
"messages": [
{
"role": "user",
"content": "实时聊天测试"
}
],
"streaming": true
}
你可以在 Postman 的 Console 中查看分批返回的数据。
3. 模拟用户行为与状态管理
为了更好地模拟多轮对话,你还可以考虑:
- 在不同的请求之间使用环境变量 :在 Postman 中,你可以创建环境变量来存储
session_id
和其他动态数据(如用户 ID、Token 等)。这样每次发送请求时,可以动态插入这些变量。
例如:
- 创建环境变量
session_id
,将其设置为从第一次请求中获取的session_id
。 - 在后续请求中引用
{``{session_id}}
变量。
4. Postman 测试策略
- 模拟不同的对话场景:可以创建多个请求,模拟不同的用户交互场景。
- 断言和验证响应 :利用 Postman 的断言功能(例如
pm.test()
)来检查响应是否符合预期,例如验证返回的消息是否正确、session_id
是否一致等。 - 性能测试 :你可以设置 Postman 的 Collection Runner 或 Newman 来批量执行请求,测试系统在多轮对话下的性能。
5. WebSocket 测试(如果接口支持)
如果接口是 WebSocket 类型(如 /chat/{flow_id}
),你也可以通过 Postman 的 WebSocket 测试功能来进行多轮对话的交互。你可以发送消息并实时接收流式响应来模拟多轮对话。
Postman WebSocket 测试步骤:
- 打开 Postman,点击 New -> WebSocket Request。
- 输入 WebSocket URL,例如:
ws://127.0.0.1:7860/api/v1/chat/{flow_id}
。 - 连接后发送消息,并观察返回的流式数据。
总结
- 使用 Postman 测试多轮对话接口时,首先确保能够通过
session_id
维持会话状态。 - 通过多次请求、逐步发送用户消息并携带
session_id
,模拟整个对话流程。 - 如果支持流式返回,确保使用
streaming=true
参数,并监控实时数据返回。 - 使用 Postman 的环境变量和自动化功能,确保测试的一致性和高效性。