在本文中,我们将探索如何使用Passio NutritionAI构建一个智能代理,该代理能够获取食物营养信息。我们将分步骤进行,包括工具定义、代理创建及其运行。
技术背景介绍
随着AI技术的发展,自动化和智能化的营养信息查询成为可能。Passio NutritionAI提供了一个API,可以方便地获取食物的营养信息。在我们实际的应用中,可以将其集成到更复杂的系统中,如健康监控平台、饮食推荐应用等。
核心原理解析
我们将使用LangChain提供的内置工具,结合OpenAI的LLM(大语言模型),构建一个可以自动查询营养信息的代理。LangChain会帮我们管理工具集与代理的执行过程。
代码实现演示
下面是代码实现的详细步骤:
1. 配置Passio NutritionAI工具
首先,我们需要配置Passio NutritionAI工具。确保已经获取了API密钥,并通过环境变量或其他方式加载到Python环境中。
from dotenv import load_dotenv
from langchain_core.utils import get_from_env
from langchain_community.tools.passio_nutrition_ai import NutritionAI
from langchain_community.utilities.passio_nutrition_ai import NutritionAIAPI
# 加载环境变量
load_dotenv()
# 获取API密钥
nutritionai_subscription_key = get_from_env("nutritionai_subscription_key", "NUTRITIONAI_SUBSCRIPTION_KEY")
# 初始化NutritionAI工具
nutritionai_search = NutritionAI(api_wrapper=NutritionAIAPI())
2. 创建智能代理及其执行器
接下来,我们定义工具列表,并创建智能代理和其执行器。
from langchain_openai import ChatOpenAI
from langchain import hub
from langchain.agents import create_openai_functions_agent, AgentExecutor
# 定义工具列表
tools = [nutritionai_search]
# 选择语言模型
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
# 获取并设置代理使用的提示模板
prompt = hub.pull("hwchase17/openai-functions-agent")
# 创建代理
agent = create_openai_functions_agent(llm, tools, prompt)
# 创建代理执行器
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
3. 运行代理
通过以下代码,我们可以运行代理来处理多种查询:
# 执行查询操作
response = agent_executor.invoke({"input": "how many calories are in a slice pepperoni pizza?"})
print(response)
response = agent_executor.invoke(
{"input": "I had bacon and eggs for breakfast. How many calories is that?"}
)
print(response)
response = agent_executor.invoke(
{"input": "I had sliced pepper jack cheese for a snack. How much protein did I have?"}
)
print(response)
response = agent_executor.invoke(
{"input": "I had chicken tikka masala for dinner. how much calories, protein, and fat did I have with default quantity?"}
)
print(response)
应用场景分析
这种智能代理可以被广泛应用于健康管理系统、餐饮业服务平台,甚至是个人饮食跟踪应用中,使用户能够快速获取食物的营养信息,辅助健康饮食决策。
实践建议
在实际应用中,建议进一步封装代理的功能,提供更友好的用户界面。同时,注意配置管理,如API密钥的安全性配置。此外,可以考虑集成更多的数据来源,丰富营养信息的准确性和广度。
如果遇到问题欢迎在评论区交流。
—END—