shukdevdatta123 commited on
Commit
648ab5f
·
verified ·
1 Parent(s): b22dd2f

Create v1.txt

Browse files
Files changed (1) hide show
  1. v1.txt +73 -0
v1.txt ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from openai import OpenAI
3
+ from PIL import Image
4
+ import base64
5
+ import io
6
+
7
+ def pil_to_base64(image, max_size=1024):
8
+ """
9
+ Convert a PIL image to a base64 string, resizing if necessary.
10
+ """
11
+ if max(image.size) > max_size:
12
+ image.thumbnail((max_size, max_size))
13
+ buffered = io.BytesIO()
14
+ image.save(buffered, format="JPEG")
15
+ return base64.b64encode(buffered.getvalue()).decode()
16
+
17
+ def generate_story(image, genre, api_key):
18
+ """
19
+ Generate a travel story based on the provided image and genre using the OpenRouter API.
20
+ """
21
+ if not image:
22
+ return "Please upload an image."
23
+ if not genre:
24
+ return "Please enter a genre."
25
+ if not api_key:
26
+ return "Please enter your OpenRouter API key."
27
+
28
+ try:
29
+ image_base64 = pil_to_base64(image)
30
+ client = OpenAI(
31
+ base_url="https://openrouter.ai/api/v1",
32
+ api_key=api_key,
33
+ )
34
+ prompt = f"Generate a {genre} story based on this travel photo."
35
+ messages = [
36
+ {
37
+ "role": "user",
38
+ "content": [
39
+ {"type": "text", "text": prompt},
40
+ {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{image_base64}"}}
41
+ ]
42
+ }
43
+ ]
44
+ completion = client.chat.completions.create(
45
+ model="meta-llama/llama-3.2-11b-vision-instruct:free",
46
+ messages=messages
47
+ )
48
+ story = completion.choices[0].message.content
49
+ return story
50
+ except Exception as e:
51
+ return f"Error: {str(e)}"
52
+
53
+ # Gradio Interface
54
+ with gr.Blocks() as demo:
55
+ gr.Markdown("# Interactive Travel Story Generator")
56
+ gr.Markdown("Upload a travel photo, select a genre, and provide your OpenRouter API key to generate a personalized travel story.")
57
+ gr.Markdown("Note: You need an OpenRouter API key to use this app. Get one at [OpenRouter](https://openrouter.ai/).")
58
+
59
+ with gr.Row():
60
+ image_input = gr.Image(type="pil", label="Upload Travel Photo")
61
+ genre_input = gr.Textbox(label="Story Genre (e.g., adventure, romance, mystery, fantasy, historical)")
62
+ api_key_input = gr.Textbox(label="OpenRouter API Key", type="password")
63
+
64
+ generate_button = gr.Button("Generate Story")
65
+ output_text = gr.Textbox(label="Generated Story", lines=10)
66
+
67
+ generate_button.click(
68
+ fn=generate_story,
69
+ inputs=[image_input, genre_input, api_key_input],
70
+ outputs=output_text
71
+ )
72
+
73
+ demo.launch()