Spaces:
Sleeping
Sleeping
| import json | |
| import requests | |
| import base64 | |
| def encode_image(image_path): | |
| with open(image_path, "rb") as image_file: | |
| return base64.b64encode(image_file.read()).decode('utf-8') | |
| def get_gpt_response(api_key, image_path, prompt, history=None): | |
| headers = { | |
| "Content-Type": "application/json", | |
| "Authorization": f"Bearer {api_key}" | |
| } | |
| if history: | |
| if len(history) > 4: | |
| history = history[-4:] | |
| else: | |
| history = [] | |
| messages = history[:] | |
| base64_images = [] | |
| if image_path: | |
| if isinstance(image_path, list): | |
| for img in image_path: | |
| base64_image = encode_image(img) | |
| base64_images.append(base64_image) | |
| else: | |
| base64_image = encode_image(image_path) | |
| base64_images.append(base64_image) | |
| messages.append({ | |
| "role": "user", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": prompt | |
| }, | |
| { | |
| "type": "image_url", | |
| "image_url": { | |
| "url": f"data:image/jpeg;base64,{base64_images}" | |
| } | |
| } | |
| ] | |
| }) | |
| else: | |
| messages.append({ | |
| "role": "user", | |
| "content": prompt | |
| }) | |
| payload = { | |
| "model": "gpt-4o", | |
| "messages": messages, | |
| "max_tokens": 600 | |
| } | |
| # Sending the request to the OpenAI API | |
| response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload) | |
| result = response.json() | |
| print("gpt result",result) | |
| try: | |
| content = result['choices'][0]['message']['content'] | |
| if content.startswith("```json"): | |
| content = content[7:] | |
| if content.endswith("```"): | |
| content = content[:-3] | |
| return content | |
| except (KeyError, IndexError, json.JSONDecodeError) as e: | |
| return json.dumps({"error": "Failed to parse model output", "details": str(e)}) | |