mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-07-21 20:06:06 +00:00
fix: 无法传递qq图片的问题
This commit is contained in:
@@ -90,8 +90,6 @@ class AnthropicMessages(requester.LLMAPIRequester):
|
|||||||
}
|
}
|
||||||
msg_dict["content"][i] = alter_image_ele
|
msg_dict["content"][i] = alter_image_ele
|
||||||
|
|
||||||
print(msg_dict)
|
|
||||||
|
|
||||||
req_messages.append(msg_dict)
|
req_messages.append(msg_dict)
|
||||||
|
|
||||||
args["messages"] = req_messages
|
args["messages"] = req_messages
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|||||||
import typing
|
import typing
|
||||||
import json
|
import json
|
||||||
import uuid
|
import uuid
|
||||||
|
import base64
|
||||||
|
|
||||||
from .. import runner
|
from .. import runner
|
||||||
from ...core import entities as core_entities
|
from ...core import entities as core_entities
|
||||||
@@ -52,10 +53,9 @@ class DifyServiceAPIRunner(runner.RequestRunner):
|
|||||||
for ce in query.user_message.content:
|
for ce in query.user_message.content:
|
||||||
if ce.type == "text":
|
if ce.type == "text":
|
||||||
plain_text += ce.text
|
plain_text += ce.text
|
||||||
elif ce.type == "image_url":
|
elif ce.type == "image_base64":
|
||||||
file_bytes, image_format = await image.get_qq_image_bytes(
|
image_b64, image_format = await image.extract_b64_and_format(ce.image_base64)
|
||||||
ce.image_url.url
|
file_bytes = base64.b64decode(image_b64)
|
||||||
)
|
|
||||||
file = ("img.png", file_bytes, f"image/{image_format}")
|
file = ("img.png", file_bytes, f"image/{image_format}")
|
||||||
file_upload_resp = await self.dify_client.upload_file(
|
file_upload_resp = await self.dify_client.upload_file(
|
||||||
file,
|
file,
|
||||||
|
|||||||
+5
-8
@@ -15,17 +15,14 @@ def get_qq_image_downloadable_url(image_url: str) -> tuple[str, dict]:
|
|||||||
return f"http://{parsed.netloc}{parsed.path}", query
|
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"""
|
"""[弃用]获取QQ图片的bytes"""
|
||||||
image_url, query = get_qq_image_downloadable_url(image_url)
|
image_url, query_in_url = get_qq_image_downloadable_url(image_url)
|
||||||
headers = {
|
query = {**query, **query_in_url}
|
||||||
'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/'
|
|
||||||
}
|
|
||||||
ssl_context = ssl.create_default_context()
|
ssl_context = ssl.create_default_context()
|
||||||
ssl_context.check_hostname = False
|
ssl_context.check_hostname = False
|
||||||
ssl_context.verify_mode = ssl.CERT_NONE
|
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:
|
async with session.get(image_url, params=query, ssl=ssl_context) as resp:
|
||||||
resp.raise_for_status()
|
resp.raise_for_status()
|
||||||
file_bytes = await resp.read()
|
file_bytes = await resp.read()
|
||||||
@@ -56,7 +53,7 @@ async def qq_image_url_to_base64(
|
|||||||
# Flatten the query dictionary
|
# Flatten the query dictionary
|
||||||
query = {k: v[0] for k, v in query.items()}
|
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()
|
base64_str = base64.b64encode(file_bytes).decode()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user