feat:增加TextToSql文档
This commit is contained in:
@@ -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;
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user