npv2k1's picture
Add Gradio application components for image analysis and configuration
e98a02a
from typing import Optional
import openai
from .image import encode_image_to_base64
def analyze_image(
image,
endpoint_url: str,
api_key: str,
selected_model: str,
prompt: str,
system_prompt: Optional[str] = None,
temperature: float = 1.0
):
"""Analyze image using LiteLLM with custom prompts"""
if not endpoint_url or not api_key:
return "Please configure both the endpoint URL and API key"
if not selected_model:
return "Please select a model"
print(f"Analyzing image with model: {selected_model}")
try:
client = openai.OpenAI(
api_key=api_key,
base_url=endpoint_url
)
# Convert image to base64
base64_image = encode_image_to_base64(image)
# Prepare messages
messages = []
# Add system prompt if provided
if system_prompt:
messages.append({
"role": "system",
"content": system_prompt
})
# Add user message with image
messages.append({
"role": "user",
"content": [
{"type": "text", "text": prompt},
{"type": "image_url", "image_url": base64_image}
]
})
# Call LiteLLM with custom endpoint
response = client.chat.completions.create(
model=selected_model,
messages=messages,
temperature=temperature
)
return str(response.choices[0].message.content)
except Exception as e:
return f"Error analyzing image: {str(e)}"