| from groq import Groq |
| from config.settings import settings |
|
|
| class ImageService: |
| def __init__(self, groq_client: Groq): |
| self.client = groq_client |
| |
| def analyze_image_with_description(self, image, user_description: str) -> str: |
| """Phân tích hình ảnh kết hợp với mô tả từ người dùng""" |
| if image is None: |
| return "No image uploaded." |
|
|
| try: |
| if user_description: |
| prompt = f"""Người dùng tải lên một hình ảnh và mô tả: "{user_description}" |
| |
| Dựa trên mô tả này, hãy phân tích chi tiết bằng tiếng Việt: |
| 1. Mô tả chi tiết những gì có trong hình ảnh |
| 2. Phân tích các yếu tố liên quan đến mô tả của người dùng |
| 3. Đưa ra nhận xét và thông tin hữu ích""" |
| else: |
| prompt = """Hãy mô tả chi tiết bằng tiếng Việt những gì bạn nghĩ có thể có trong hình ảnh này. |
| Mô tả các đối tượng, màu sắc, bố cục và ngữ cảnh có thể có của hình ảnh.""" |
|
|
| chat_completion = self.client.chat.completions.create( |
| messages=[{"role": "user", "content": prompt}], |
| model=settings.LLM_MODEL, |
| ) |
| description = chat_completion.choices[0].message.content |
| except Exception as e: |
| description = f"Error in image analysis: {str(e)}" |
|
|
| return description |