打造你的智能营养助手:利用Passio NutritionAI实现食物营养分析

130 阅读3分钟

打造你的智能营养助手:利用Passio NutritionAI实现食物营养分析

引言

随着健康意识的增强,许多人开始关注自己每天摄入食物的营养成分及其对身体的影响。Passio NutritionAI 提供了一种便捷的方式来获取食物的营养信息,而将这种能力集成到代理程序中,可以为用户带来极大的便利。本文将向您展示如何使用 Passio NutritionAI 和 LangChain 创建一个智能营养助手。

主要内容

配置Passio NutritionAI工具

首先,我们需要配置Passio NutritionAI工具。该工具要求API密钥,Passio NutritionAI提供了免费的API使用层级。创建API密钥后,可以通过多种方式将其导入Python环境,例如使用dotenv包。

from dotenv import load_dotenv
from langchain_core.utils import get_from_env

load_dotenv()

nutritionai_subscription_key = get_from_env(
    "nutritionai_subscription_key", "NUTRITIONAI_SUBSCRIPTION_KEY"
)

设置LangChain工具

接下来,我们利用LangChain内置的工具来使用Passio NutritionAI。我们定义一个工具列表,以便后续的代理使用。

from langchain_community.tools.passio_nutrition_ai import NutritionAI
from langchain_community.utilities.passio_nutrition_ai import NutritionAIAPI

nutritionai_search = NutritionAI(api_wrapper=NutritionAIAPI())  # 使用API代理服务提高访问稳定性

tools = [nutritionai_search]

创建智能代理

我们将使用OpenAI Functions代理来指导我们的智能助手。首先,选择合适的语言模型(LLM)和提示(Prompt):

from langchain_openai import ChatOpenAI
from langchain import hub

llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
prompt = hub.pull("hwchase17/openai-functions-agent")

from langchain.agents import create_openai_functions_agent
agent = create_openai_functions_agent(llm, tools, prompt)

执行代理任务

最后,结合代理和工具,并通过AgentExecutor执行任务:

from langchain.agents import AgentExecutor

agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 运行查询
response = agent_executor.invoke({"input": "how many calories are in a slice of pepperoni pizza?"})
print(response)

代码示例

以下是一个完整的示例代码,展示了如何调用代理来查询食物的营养信息:

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
from langchain_openai import ChatOpenAI
from langchain import hub
from langchain.agents import create_openai_functions_agent, AgentExecutor

# 加载环境变量
load_dotenv()
nutritionai_subscription_key = get_from_env(
    "nutritionai_subscription_key", "NUTRITIONAI_SUBSCRIPTION_KEY"
)

# 设置Passio NutritionAI工具
nutritionai_search = NutritionAI(api_wrapper=NutritionAIAPI())  # 使用API代理服务提高访问稳定性

# 定义工具
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)
response = agent_executor.invoke({"input": "I had chicken tikka masala for dinner. How many calories, protein, and fat did I have with default quantity?"})
print(response)

常见问题和解决方案

  1. API访问不稳定:如果您在某些地区的网络环境下访问API不稳定,建议使用API代理服务来提升访问体验。
  2. 环境变量配置问题:确保正确配置环境变量(如API密钥)以避免权限错误。
  3. 错误的食物名称:确保输入食物名称的拼写正确,以便获得准确的营养信息。

总结和进一步学习资源

通过这篇文章,我们实现了一个使用Passio NutritionAI的智能营养助手。此工具可以帮助您快速获取食物的营养信息,从而更好地管理您的饮食健康。要扩展此项目的能力,您可以参考以下资源:

参考资料

  1. Passio NutritionAI API 文档 # 使用API代理服务提高访问稳定性
  2. LangChain 官方文档
  3. OpenAI GPT-3 API 文档

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

---END---