基于NIM平台API接口实现多模态对话机器人

项目名称:基于NIM平台API接口实现多模态对话机器人

报告日期:2024819

项目负责人:Sophia

项目概述:

基于NVIDAINIM平台,结合轻量级phi-3-vision-128k-instruct的图片理解能力,实现对图片的理解,本来打算做图片的修改的,等找时间再完善吧。

技术方案与实施步骤

模型选择:

phi-3-vision-128k-instruct

轻量级小模型,便于边缘设备应用

数据的构建: 

使用base64库将图片转换为base64格式,用于小模型去理解

功能整合  

将图片转换为base64,使用小模型理解图像内容,并以文字输出,使用gradio的UI界面进行人机交互。

下一步准备在对图片理解之后,对图片进行修改,再由base64转换为图片,同时结合RAG输出图片的同时输出文本关联内容。

实施步骤:

环境搭建: 

Python 3.8 或3.8+

pip install langchain-nvidia-ai-endpoints

pip install langchain_core

pip install langchain

pip install faiss-cpu==1.7.2

pip install openai

pip install gradio

代码实现:

使用NIM平台API接口,添加NVIDIA_API_KEY

os.environ["NVIDIA_API_KEY"] = "****************************************"

将图片编辑为base64格式

# 图片编辑
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, image):

    image_b64 = image2b64(image_b64)
    # Chart reading Runnable
    chart_reading = ChatNVIDIA(model="microsoft/phi-3-vision-128k-instruct")
    chart_reading_prompt = ChatPromptTemplate.from_template(
        'Generate descriptive text for the following images, : <img src="data:image/png;base64,{image_b64}" />'
    )
    chart_chain = chart_reading_prompt | chart_reading
    return chart_chain.invoke({"image_b64": image_b64, "input": user_input, "image": image})

人机交互界面

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")
项目成果与展示:

应用场景展示 

需要对图片内容进行理解并转换为文字输出时

功能演示: 

未来方向:

进一步想实现在理解图片的基础上,对图片进行修改,并转换为图片输出,同时结合RAG,可以提供相关说明或者注释。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值