From 07ca48d6529f69bb3a256c2486051a6583bc477c Mon Sep 17 00:00:00 2001 From: Junyan Qin Date: Tue, 24 Dec 2024 11:26:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=97=A0=E6=B3=95=E4=BC=A0=E9=80=92qq?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/provider/modelmgr/requesters/anthropicmsgs.py | 2 -- pkg/provider/runners/difysvapi.py | 8 ++++---- pkg/utils/image.py | 13 +++++-------- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/pkg/provider/modelmgr/requesters/anthropicmsgs.py b/pkg/provider/modelmgr/requesters/anthropicmsgs.py index caaef307..25b7da17 100644 --- a/pkg/provider/modelmgr/requesters/anthropicmsgs.py +++ b/pkg/provider/modelmgr/requesters/anthropicmsgs.py @@ -90,8 +90,6 @@ class AnthropicMessages(requester.LLMAPIRequester): } msg_dict["content"][i] = alter_image_ele - print(msg_dict) - req_messages.append(msg_dict) args["messages"] = req_messages diff --git a/pkg/provider/runners/difysvapi.py b/pkg/provider/runners/difysvapi.py index beb49115..733d6344 100644 --- a/pkg/provider/runners/difysvapi.py +++ b/pkg/provider/runners/difysvapi.py @@ -3,6 +3,7 @@ from __future__ import annotations import typing import json import uuid +import base64 from .. import runner from ...core import entities as core_entities @@ -52,10 +53,9 @@ class DifyServiceAPIRunner(runner.RequestRunner): for ce in query.user_message.content: if ce.type == "text": plain_text += ce.text - elif ce.type == "image_url": - file_bytes, image_format = await image.get_qq_image_bytes( - ce.image_url.url - ) + elif ce.type == "image_base64": + image_b64, image_format = await image.extract_b64_and_format(ce.image_base64) + file_bytes = base64.b64decode(image_b64) file = ("img.png", file_bytes, f"image/{image_format}") file_upload_resp = await self.dify_client.upload_file( file, diff --git a/pkg/utils/image.py b/pkg/utils/image.py index 72c63ef5..06885175 100644 --- a/pkg/utils/image.py +++ b/pkg/utils/image.py @@ -15,17 +15,14 @@ def get_qq_image_downloadable_url(image_url: str) -> tuple[str, dict]: return f"http://{parsed.netloc}{parsed.path}", query -async def get_qq_image_bytes(image_url: str) -> tuple[bytes, str]: +async def get_qq_image_bytes(image_url: str, query: dict={}) -> tuple[bytes, str]: """[弃用]获取QQ图片的bytes""" - image_url, query = get_qq_image_downloadable_url(image_url) - headers = { - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', - 'Referer': 'https://multimedia.nt.qq.com.cn/' - } + image_url, query_in_url = get_qq_image_downloadable_url(image_url) + query = {**query, **query_in_url} ssl_context = ssl.create_default_context() ssl_context.check_hostname = False ssl_context.verify_mode = ssl.CERT_NONE - async with aiohttp.ClientSession(trust_env=False, headers=headers) as session: + async with aiohttp.ClientSession(trust_env=False) as session: async with session.get(image_url, params=query, ssl=ssl_context) as resp: resp.raise_for_status() file_bytes = await resp.read() @@ -56,7 +53,7 @@ async def qq_image_url_to_base64( # Flatten the query dictionary query = {k: v[0] for k, v in query.items()} - file_bytes, image_format = await get_qq_image_bytes(image_url) + file_bytes, image_format = await get_qq_image_bytes(image_url, query) base64_str = base64.b64encode(file_bytes).decode()