feat:增加TextToSql文档

This commit is contained in:
2026-06-09 14:01:34 +08:00
parent 46366ef73d
commit b40d3f14a8
3 changed files with 173 additions and 1 deletions

View File

@@ -171,4 +171,72 @@ agent.stream({"messages": [message]},
):
```
  调用模型的时候需要传递`thread_id`
  调用模型的时候需要传递`thread_id`
::: tip
通常还需要构建一个`用户-问题标题`的数据库,方便查询用户的所有历史回答。
问题标题可以再调一次模型总结。
:::
# 七、实战
## 7.1 后端
```python
async def query_agent(request: ChatRequest):
try:
message = HumanMessage(content=request.message)
# 流式调用Agent
for chunk, metadata in agent.stream(
{"messages": [message]},
{"configurable": {"thread_id": request.thread_id}},
stream_mode="messages"
):
if isinstance(chunk, AIMessageChunk) and chunk.content:
yield chunk.content
# 总结对话标题并保存
if not exists_session(request.thread_id, request.username):
title = generate_title(get_messages(request.thread_id))
save_session(request.thread_id, request.username, title)
except Exception as e:
print(f"\n[错误]: {str(e)}")
yield "信息检索失败,请重新输入问题提问"
@router.post("/chat/stream")
async def chat_endpoint(request: ChatRequest):
"""流式对话"""
return StreamingResponse(
query_agent(request),
media_type="text/event-stream"
)
```
## 7.2 前端
```typescript
const sendMessage = async () => {
try {
const response = await fetch(
"/chief-agent-api/chat/stream",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(message)
}
);
const reader = response.body!.getReader();
const decoder = new TextDecoder("utf-8");
let aiText = "";
while (true) {
const { value, done } = await reader.read();
if (done) break;
aiText += decoder.decode(value, { stream: true });
}
} finally {
loading = false;
}
};
```