from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain import OpenAI
from langchain.chat_models import ChatOpenAI
from langchain.agents import tool
import asyncio
from datetime import date
@tool
def times(text: str) -> str:
"""
返回今天的日期,用于任何需要知道今天日期的问题。\
输入应该总是一个空字符串,\
这个函数将总是返回今天的日期,任何日期计算应该在这个函数之外进行。
"""
today = date.today()
# 定义星期几的名称
days_of_week = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
# 获取今天是星期几(0 是星期一,6 是星期日)
day_of_week = days_of_week[today.weekday()]
# 格式化日期
formatted_date = today.strftime(f"%Y年%m月%d日 {day_of_week}")
return str(formatted_date)
#---------------------------llama3
llm = ChatOpenAI(api_key = "XXX",
base_url = "XXX",
streaming=True,
model='XXX',
max_tokens=2048,
)
agents_executor = initialize_agent(
tools=[times],
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=False
)
async def main():
msg = ''
final = False
async for event in agents_executor.astream_events({"input": "现在是几月?请根据月份讲个1000字左右的中文童话故事给我"},version="v1",):
kind = event["event"]
if kind == "on_chat_model_stream":
msg += event['data']['chunk'].content
if not final:
if "Final Answer:" in msg:
_msg = msg.split("Final Answer:")[1].lstrip()
print(f"===Parser chunk: {_msg}", flush=True)
final = True
else:
print(f"===Parser chunk: {event['data']['chunk'].content}", flush=True)
asyncio.run(main())
langchain Agent流式输出
于 2024-06-13 14:05:43 首次发布