Spaces:
Sleeping
Sleeping
| from openai import AzureOpenAI | |
| import json | |
| from io import BytesIO | |
| import requests | |
| import re | |
| import streamlit as st | |
| def get_client(): | |
| client = AzureOpenAI( | |
| api_version="2024-05-01-preview", | |
| azure_endpoint=st.secrets['endpoint'], | |
| api_key=st.secrets['key'], | |
| ) | |
| return client | |
| def generate_image(prompt): | |
| client = get_client() | |
| result = client.images.generate( | |
| model="Dalle3", | |
| prompt=prompt, | |
| n=1 | |
| ) | |
| image_url = json.loads(result.model_dump_json())['data'][0]['url'] | |
| result = requests.get(image_url) | |
| return BytesIO(result.content) | |
| def generate_image_prompt(prompt): | |
| payload = { | |
| "messages": [ | |
| { | |
| "role": "system", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "You give a few examples of english prompts that help generate image base on user's input. Return prompts in bullet point" | |
| } | |
| ] | |
| }, | |
| { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": prompt | |
| } | |
| ] | |
| } | |
| ], | |
| "temperature": 0.9, | |
| "top_p": 0.95, | |
| "max_tokens": 800 | |
| } | |
| response = requests.post(st.secrets['completionendpoint'], headers={"Content-Type": "application/json", "api-key": st.secrets['key']}, json=payload) | |
| response.raise_for_status() # Will raise an HTTPError if the HTTP request returned an unsuccessful status code | |
| return response.json()['choices'][0]['message']['content'] | |
| def process_image_prompt(response): | |
| response = response.split('\n') | |
| response = [re.sub(r"(?<!\\)['\"](.*?)(?<!\\)['\"]", r"\1", response[i]) for i in range(len(response))] | |
| return response | |
| if __name__ == "__main__": | |
| response = generate_image_prompt('halong bay, vietnam') | |
| response = process_image_prompt(response) | |