pic_read.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. from openai import OpenAI
  2. import requests
  3. import base64
  4. from config import key_get
  5. siliflow_key = key_get('siliflow')
  6. def pic_see(url):
  7. """
  8. 调用图片识别api,获取群聊图片内容
  9. """
  10. # 1. 下载网络图片到本地临时文件
  11. try:
  12. response = requests.get(url)
  13. response.raise_for_status() # 检查HTTP错误
  14. except requests.exceptions.RequestException as e:
  15. print(f"下载图片失败: {e}")
  16. return "图片识别失败"
  17. # 2. 保存为临时文件(例如保存到当前目录)
  18. img_path = "temp_image.jpg" # 根据图片格式调整扩展名(jpg/png等)
  19. with open(img_path, "wb") as f:
  20. f.write(response.content)
  21. # 图片转base64编码
  22. with open(img_path, "rb") as path:
  23. try:
  24. base64_data = base64.b64encode(path.read()).decode("utf-8")
  25. data_uri = f"data:image/jpeg;base64,{base64_data}"
  26. except Exception as e:
  27. return "图片识别失败"
  28. client = OpenAI(
  29. base_url='https://api.siliconflow.cn/',
  30. api_key=siliflow_key,
  31. )
  32. completion = client.chat.completions.create(
  33. extra_headers={
  34. "HTTP-Referer": "<YOUR_SITE_URL>", # Optional. Site URL for rankings on openrouter.ai.
  35. "X-Title": "<YOUR_SITE_NAME>", # Optional. Site title for rankings on openrouter.ai.
  36. },
  37. extra_body={},
  38. model="Pro/Qwen/Qwen2.5-VL-7B-Instruct",
  39. messages=[
  40. {
  41. "role": "user",
  42. "content": [
  43. {
  44. "type": "text",
  45. "text": "请为我详细描述这张图片的内容"
  46. },
  47. {
  48. "type": "image_url",
  49. "image_url": {
  50. "url": data_uri
  51. }
  52. }
  53. ]
  54. }
  55. ]
  56. )
  57. ans = completion.choices[0].message.content
  58. print(ans)
  59. return (ans)