File size: 2,100 Bytes
527c510
7cbb5f2
 
 
 
 
6305cff
 
4d69588
7cbb5f2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b1f16e2
7ec2144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b1f16e2
 
7ec2144
4d69588
 
6b323fa
1b7fe97
 
1d51385
6172e67
20991a6
6172e67
 
 
 
 
7cbb5f2
6172e67
6b323fa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import gradio as gr
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):
    try:
        model = "pixtral-large-2411"
        base64_image = encode_image(image)
        # Define the messages for the chat
        messages = [{
            "role":
            "user",
            "content": [
                {
                    "type": "text",
                    "text": "Please provide a detailed description of this photo"
                },
                {
                    "type": "image_url",
                    "image_url": f"data:image/jpeg;base64,{base64_image}",
                },
            ],
        }]
    
    
        partial_message = Mistralclient.chat.stream(model=model, messages=messages)
        return partial_message
    except Exception as e:  # 添加通用异常处理
        print(f"Error: {e}")
        return "Please upload a photo"


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()