| 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 |