File size: 1,610 Bytes
89cba23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7fdfdec
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

import gradio as gr
import os
from openai import OpenAI


with gr.Blocks() as demo:
    with gr.Row():
        image = gr.Image(label="image", height=600)
        chatbot = gr.Chatbot()

    prompt = gr.Textbox(label="prompt")
    url = gr.Textbox(label="url")
    openai_key = gr.Textbox(label="OpenAI API key")
    gr.Examples(
        examples=[
            ["https://huggingface.co/Adapter/t2iadapter/resolve/main/figs_SDXLV1.0/org_sketch.png", "Describe what is in the image","https://huggingface.co/Adapter/t2iadapter/resolve/main/figs_SDXLV1.0/org_sketch.png"]
        ],
        inputs=[image, prompt,url],
    )

    def respond(message,openai_key, url ,chat_history):
        os.environ["OPENAI_API_KEY"] = openai_key 
        client = OpenAI()

        response = client.chat.completions.create(
            model="gpt-4-vision-preview",
            messages=[
                {
                    "role": "user",
                    "content": [
                        {"type": "text", "text": message},
                        {
                            "type": "image_url",
                            "image_url":url,
                        },
                    ],
                },
            ],
            max_tokens=1000,
        )

        out = response.choices[0].message.content

        chat_history.append((message, out))
        return "", chat_history

    def update_image(url, image):
        return url

    prompt.submit(respond, [prompt,openai_key, url, chatbot], [prompt, chatbot])
    url.submit(update_image, [ url, image], [image])
demo.queue().launch(share=True)