langchain Agent流式输出

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())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值