AI-Agent智能对话根据温度设定制冷制热模式
NVIDIA AI-AGENT夏季训练营
项目名称:AI-AGENT夏季训练营 — RAG智能对话机器人
报告日期:2024年8月18日
项目负责人:wujialiang
项目概述:
**应用场景:**本项目展示了基于英伟达的基于 NIM 建构多模态 AI-Agent的创新应用。从一个表格图中获取制冷与制热模式对应的温度,根据图中约定的温度值,结合输入当前的温度来决定空调设备设置为什么模式。利用大模型对图像的理解能力约定空调的运行模式,可以根据不同的数据表格图来指定不同的温度范围对应不同的运行模式。
技术方案与实施步骤
模型选择:本项目采用Microsoft的【phi-3-vision-128k-instruct】来解析图片数据,未来可以考虑项目可以落地到jetson系列的设备进行边缘计算。
数据的构建: 通过excel表格构建空调设备的不同模式对应的温度范围,利用大语言模型提取表格中设备运行的模式以及模型对应的温度范围值,根据输入当前的温度值范围当前应该设置什么模式。最后使用gradio将其部署并应用。
实施步骤:
环境搭建:
安装anaconda创建虚拟环境
conda creat --name ai_endpoint python=3.8
conda activate ai_endpoint
pip install langchain-nvidia-ai-endpoints jupyterlab langchain_core langchain matplotlib numpy faiss-cpu==1.7.2 langchain-community
pip install edge-tts
pip install openai
pip install gradio
- 相关代码实现:
- 数据获取和处理:
def image2b64(image_file): with open(image_file, "rb") as f: image_b64 = base64.b64encode(f.read()).decode() return image_b64
def chart_agent_gr(image_b64, user_input, table): image_b64 = image2b64(image_b64) chart_reading = ChatNVIDIA(model="microsoft/phi-3-vision-128k-instruct") chart_reading_prompt = ChatPromptTemplate.from_template( 'tell me about the photo what is the relationship about the mode and temputer below, : <img src="data:image/png;base64,{image_b64}" />' ) chart_chain = chart_reading_prompt | chart_reading instruct_chat = ChatNVIDIA(model="meta/llama-3.1-405b-instruct") instruct_prompt = ChatPromptTemplate.from_template( "Do NOT repeat my requirements already stated. Based on this table {table}, {input}" ) instruct_chain = instruct_prompt | instruct_chat # 根据“表格”决定是否读取图表 chart_reading_branch = RunnableBranch( (lambda x: x.get('table') is None, RunnableAssign({'table': chart_chain })), (lambda x: x.get('table') is not None, lambda x: x), lambda x: x ) chain = ( chart_reading_branch | RunnableLambda(print_and_return) | instruct_chain | RunnableLambda(print_and_return) ) return chain.invoke({"image_b64": image_b64, "input": user_input, "table": table})
import gradio as gr
multi_modal_chart_agent = gr.Interface(fn=chart_agent_gr,
inputs=[gr.Image(label="Upload image", type="filepath"), 'text'],
outputs=['text'],
title="Multi Modal chat agent",
description="Multi Modal chat agent",
allow_flagging="never")
multi_modal_chart_agent.launch(debug=True, share=False, show_api=False, server_port=5000, server_name="0.0.0.0")
项目成果与展示:
- 应用场景展示: 本项目主要根据给定的温度来获取空调设备的运行模式。
- 功能演示:
- 输入when temputer=24 ,what the mode is,only show the mode
- 输入when temputer=26 ,what the mode is,only show the mode
总结:
- 项目评估:目前对于图片的识别与温度范围的理解符合要求。
- 未来方向:后期考虑加入事实提取中国气象局的数据,根据不同城市的温度来无感控制不同地区空调的运行模式。