mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-02 20:14:36 +00:00
fix: 无法传递qq图片的问题
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user