aifeifei798's picture
Update app.py
7cbb5f2 verified
raw
history blame
1.8 kB
import base64
from io import BytesIO
import os
from mistralai import Mistral
import re
from PIL import Image
api_key = os.getenv("MISTRAL_API_KEY")
Mistralclient = Mistral(api_key=api_key)
def encode_image(image_path):
"""Encode the image to base64."""
try:
# 打开图片文件
image = Image.open(image_path).convert("RGB")
# 将图片转换为字节流
buffered = BytesIO()
image.save(buffered, format="JPEG")
img_str = base64.b64encode(buffered.getvalue()).decode("utf-8")
return img_str
except FileNotFoundError:
print(f"Error: The file {image_path} was not found.")
return None
except Exception as e: # 添加通用异常处理
print(f"Error: {e}")
return None
def feifeichat(image):
model = "pixtral-large-2411"
# Define the messages for the chat
messages = [{
"role":
"user",
"content": [
{
"type": "text",
"text": "用英文详细描述下"
},
{
"type": "image_url",
"image_url": f"data:image/jpeg;base64,{base64_image}",
},
],
}]
partial_message = Mistralclient.chat.stream(model=model, messages=messages):
return partial_message
with gr.Blocks() as demo:
gr.Markdown("Florence-2 Image To Flux Prompt")
with gr.Tab(label="Image To Flux Prompt"):
with gr.Row():
with gr.Column():
input_img = gr.Image(label="Input Picture",height=480)
submit_btn = gr.Button(value="Submit")
with gr.Column():
output_text = gr.Textbox(label="Output Text")
submit_btn.click(feifeichat, [input_img], [output_text])
demo.launch()