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']}")

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐