image_describer.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from pqai_agent import chat_service
  2. from pqai_agent.chat_service import VOLCENGINE_MODEL_DOUBAO_1_5_VISION_PRO
  3. from pqai_agent.logging_service import logger
  4. from pqai_agent.toolkit.base import BaseToolkit
  5. from pqai_agent.toolkit.function_tool import FunctionTool
  6. class ImageDescriber(BaseToolkit):
  7. def __init__(self):
  8. self.model = VOLCENGINE_MODEL_DOUBAO_1_5_VISION_PRO
  9. self.llm_client = chat_service.OpenAICompatible.create_client(self.model)
  10. super().__init__()
  11. def analyse_image(self, image_url: str):
  12. """Takes an image URL as input and returns a detailed description of the image.
  13. Args:
  14. image_url (str): The URL of the image to be described.
  15. Returns:
  16. str: A detailed description of the image.
  17. """
  18. system_prompt = "你是一位图像分析专家。请提供输入图像的详细描述,包括图像中的文本内容(如果存在)"
  19. messages = [
  20. {'role': 'system', 'content': system_prompt},
  21. {'role': 'user', 'content': [
  22. {
  23. 'type': 'image_url',
  24. 'image_url': image_url
  25. }
  26. ]}
  27. ]
  28. response = self.llm_client.chat.completions.create(messages=messages, model=self.model)
  29. response_content = response.choices[0].message.content
  30. logger.debug(f"ImageDescriber response: {response_content}")
  31. return response_content
  32. def get_tools(self):
  33. return [FunctionTool(self.analyse_image)]