在今天的文章中,我们将介绍如何利用Passio NutritionAI来创建一个能够提供食品营养信息的智能代理。我们将深入探讨技术背景、核心原理、代码实现演示以及应用场景分析,帮助您更好地理解NutritionAI的强大功能。
技术背景介绍
Passio NutritionAI是一项用于获取食品营养信息的服务。它为开发者提供了访问食品营养数据的API接口,因此应用广泛,包括健康应用、餐饮推荐系统等。通过使用NutritionAI,开发者可以轻松查找食品的营养成分,为用户提供更全面的健康建议。
核心原理解析
NutritionAI通过Restful API接口提供食品营养数据。开发者可以通过这些接口查询具体食品的营养成分。通常,这些接口需要一个有效的API密钥来访问。LangChain提供了对NutritionAI的集成,使得开发者可以轻松地将其与智能代理结合使用。
代码实现演示
下面的代码演示了如何使用LangChain以及Passio NutritionAI来创建一个智能代理,能够回答关于食品营养的信息:
环境设置
from dotenv import load_dotenv
from langchain_core.utils import get_from_env
load_dotenv()
# 获取NutritionAI的API密钥
nutritionai_subscription_key = get_from_env(
"nutritionai_subscription_key", "NUTRITIONAI_SUBSCRIPTION_KEY"
)
NutritionAI工具初始化
from langchain_community.tools.passio_nutrition_ai import NutritionAI
from langchain_community.utilities.passio_nutrition_ai import NutritionAIAPI
# 初始化NutritionAI工具
nutritionai_search = NutritionAI(api_wrapper=NutritionAIAPI())
代理创建
from langchain_openai import ChatOpenAI
from langchain import hub
from langchain.agents import create_openai_functions_agent, AgentExecutor
# 创建语言模型
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
# 获取并设置代理的提示信息
prompt = hub.pull("hwchase17/openai-functions-agent")
prompt.messages
# 初始化代理
agent = create_openai_functions_agent(llm, tools=[nutritionai_search], prompt=prompt)
# 创建代理执行器
agent_executor = AgentExecutor(agent=agent, tools=[nutritionai_search], verbose=True)
运行代理
# 使用代理处理查询
agent_executor.invoke({"input": "I had chicken tikka masala for dinner. how much calories, protein, and fat did I have with default quantity?"})
应用场景分析
如此构建的代理可以帮助用户进行日常饮食的卡路里计算以及营养追踪,非常适合健康类应用、智能饮食推荐系统等场景。此外,还可以为用户提供更加个性化的健康管理建议。
实践建议
- 确保API密钥的安全性,避免泄露。
- 根据实际应用需求,调整代理的提示信息,以获得更精准的回答。
- 注意API调用频率,避免超出免费层级的限制。
如果遇到问题欢迎在评论区交流。
—END—