使用 Streamlit +gpt-4o实现有界面的图片内容分析

在上一篇利用gpt-4o分析图像的基础上,进一步将基于 Python 的 Streamlit 库,结合 OpenAI 的 API,构建一个简洁易用的有界面图片内容分析应用。通过该应用,用户可以轻松浏览本地图片,并获取图片的详细描述。

目录

  1. 项目简介
  2. 项目环境搭建
  3. 代码详解
  4. 运行应用
  5. 总结与扩展

项目简介

本项目旨在通过构建一个基于网页界面的应用,使用户能够:

  • 浏览本地特定目录下的所有图片文件(支持 JPG、JPEG、PNG 格式)。
  • 选择任意图片并在界面中显示。
  • 使用 OpenAI 的 GPT-4 模型对选中的图片内容进行描述和分析。

项目环境搭建

在开始编码之前,请确保您的开发环境中已安装以下软件和库:

  • Python 3.7 及以上版本
  • Streamlit:用于快速构建网页应用
  • Pillow (PIL):用于处理图像文件
  • requests:用于发送 HTTP 请求
  • OpenAI Python 库:用于与 OpenAI API 交互

安装必要的 Python 库可以使用以下命令:

pip install streamlit pillow requests openai

此外,您需要获取 OpenAI 的 API 密钥,并将其设置为环境变量 OPENAI_API_KEY

代码详解

下面我们将逐步解析实现图片内容分析应用的代码。

导入所需库

首先,导入所有需要的 Python 库:

import streamlit as st
import os
from PIL import Image
import base64
import requests
  • streamlit 用于构建网页界面。
  • os 用于文件和目录操作。
  • PIL(Python Imaging Library)用于处理图像文件。
  • base64 用于对图像进行编码。
  • requests 用于发送 HTTP 请求与 OpenAI API 交互。

列出指定目录下的图片文件

定义一个函数,用于遍历指定的根目录及其所有子目录,列出所有符合指定扩展名(JPG、JPEG、PNG)的图片文件。

def list_files_in_all_directories(root_directory, extensions):
    files = []
    for dirpath, _, filenames in os.walk(root_directory
能不能帮我优化这段代码,让streamlit界面更加美观好看合理,有一问一答,更像个只能聊天系统 import streamlit as st from langchain_community.graphs import Neo4jGraph from langchain.chains import GraphCypherQAChain from langchain.prompts import PromptTemplate from langchain_openai import ChatOpenAI from langchain_ollama import ChatOllama # 连接 Neo4j 数据库 graph = Neo4jGraph( url="neo4j+s://bf0befc9.databases.neo4j.io", # 替换为你的 URL username="neo4j", password="Hl7FXJhH1azmgC34YhaweYyigcKwQK3wiRfNVNeWru8", database="neo4j" ) # DeepSeek 负责生成 Cypher qa_llm = ChatOllama( base_url="http://223.109.239.9:20006", model="deepseek-r1:70b", # system_prompt=cypher_prompt ) cypher_llm = ChatOpenAI( base_url="https://api.chatanywhere.tech/v1", api_key='sk-hZEb9uq0085t1EFFIm4RoXAvH4ktKshUFgWwDv3BneS0SIZp', model="gpt-4o-mini" ) # 构建 Cypher 生成和查询链 cypher_chain = GraphCypherQAChain.from_llm( graph=graph, cypher_llm=cypher_llm, qa_llm=qa_llm, validate_cypher=True, verbose=True, allow_dangerous_requests=True ) # Streamlit 页面 st.title("Meta 智能聊天助手") # 用户输入查询 user_query = st.text_input("💬 请输入你的问题:") # 提交按钮 if st.button("提交查询"): if user_query: try: # response = cypher_chain.invoke(user_query) # 提取最终的回答,去除多余部分 response = cypher_chain.invoke(user_query) print("\n🤖 机器人:", response) st.write("🤖 机器人:", response) except Exception as e: st.write("⚠️ 发生错误:", str(e)) else: st.write("请输入有效的问题。")
03-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

风翔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值