47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
from datetime import datetime
|
||
|
||
from langchain_core.messages import HumanMessage, AIMessageChunk
|
||
|
||
from agent.bill import bill_agent
|
||
from modes.agent import QueryRequest
|
||
|
||
|
||
async def query_bill_agent(query: QueryRequest):
|
||
try:
|
||
print(query)
|
||
today = datetime.today().strftime("%Y-%m-%d")
|
||
|
||
message_content = (
|
||
f"[当前系统日期: {today}]\n\n"
|
||
f"{query.message}"
|
||
)
|
||
|
||
message = HumanMessage(content=message_content)
|
||
|
||
tool_called = False
|
||
content_generate = False
|
||
|
||
# 流式调用Agent
|
||
for chunk, metadata in bill_agent.stream(
|
||
{"messages": [message]},
|
||
stream_mode="messages"
|
||
):
|
||
# print(chunk)
|
||
if isinstance(chunk, AIMessageChunk):
|
||
if chunk.content:
|
||
if not content_generate:
|
||
content_generate = True
|
||
yield "\n 📋 **分析结果**:\n"
|
||
yield chunk.content
|
||
|
||
for tc in chunk.tool_call_chunks:
|
||
if tc.get("args"):
|
||
if not tool_called:
|
||
tool_called = True
|
||
yield "🛠️ **开始查询数据**:查询日期:"
|
||
yield tc["args"]
|
||
|
||
except Exception as e:
|
||
print(f"\n[错误]: {str(e)}")
|
||
yield "信息检索失败,请重新输入问题提问"
|