langchain_openai的ChatOpenAI调用ollama多模态模型

langchain_openai的ChatOpenAI调用ollama多模态模型

使用到的python库

这里主要用到了这个几个库,使用streamlit,用来页面展示

  • streamlit
  • langchain
  • langchain_openai
  • base64

ollama 部署

  1. 将自己微调好的模型使用llama.cpp转换成gguf格式,记录好保存的位置,也可以去huggingface官网去下载gguf文件
  2. 找一个自己能找到的位置创建一个ModelFile.txt
  3. 在ModelFile.txt 编辑写入 FROM D:\workspace\modes\gguf\quantize\llava-llama-3-8b-v1_1-int4.gguf 将gguf文件位置改为你自己的位置
  4. 打开cmd输入 ollama create example -f Modelfile.txt 其中example 是名字,自己改
  5. 然后输入 ollama run example
  6. 不需要别的操作了,ollama默认支持openai api格式
  7. 关于 ollama 语法,参考ollama

python代码

import streamlit as st
from langchain_openai import ChatOpenAI
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
from langchain.schema import HumanMessage
import base64

# 设置页面标题
st.title("ChatOpenAI 图像分析与对话应用")

# 初始化 ChatOpenAI 模型
chat = ChatOpenAI(model="llava", openai_api_key="ollama", openai_api_base="http://localhost:11434/v1/")

# 初始化对话记忆
if "memory" not in st.session_state:
    st.session_state.memory = ConversationBufferMemory()

# 初始化对话链
conversation = ConversationChain(llm=chat, memory=st.session_state.memory)

# 用户输入
user_input = st.text_input("请输入你想让模型分析的内容:", "分析这张图片")

# 上传图片
uploaded_file = st.file_uploader("上传图片", type=["png", "jpg", "jpeg"])

if uploaded_file and user_input:
    # 读取并编码图像
    img_base64 = base64.b64encode(uploaded_file.read()).decode()

    # 使用 ChatOpenAI 模型进行图像分析
    messages = [
        HumanMessage(
            content=user_input,
            additional_kwargs={"image_url": {"url": f"data:image/jpeg;base64,{img_base64}"}}
        )
    ]

    msg = chat.invoke(messages)

    # 显示结果
    st.image(uploaded_file, caption="Uploaded Image", use_column_width=True)
    st.write("图像分析结果:")
    st.write(msg.content)  # 直接访问 content 属性

# 显示对话记录
if "chat_history" in st.session_state and st.session_state.chat_history:
    st.write("对话记录:")
    for msg in st.session_state.chat_history:
        st.write(f"用户: {msg['input']}")
        st.write(f"模型: {msg['output']}")

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙_尧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值