From 5e048c947289873424a0d49919bc5ed611fc9283 Mon Sep 17 00:00:00 2001 From: duolanda Date: Sun, 11 May 2025 00:41:05 +0800 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20fix=20lint=20problems?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nonebot_plugin_llmchat/__init__.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/nonebot_plugin_llmchat/__init__.py b/nonebot_plugin_llmchat/__init__.py index 1d33e19..0b14e1c 100755 --- a/nonebot_plugin_llmchat/__init__.py +++ b/nonebot_plugin_llmchat/__init__.py @@ -1,13 +1,13 @@ import asyncio +import base64 from collections import defaultdict, deque from datetime import datetime import json import os import random import re -import time -import base64 import ssl +import time from typing import TYPE_CHECKING import aiofiles @@ -39,7 +39,11 @@ require("nonebot_plugin_apscheduler") from nonebot_plugin_apscheduler import scheduler if TYPE_CHECKING: - from openai.types.chat import ChatCompletionMessageParam + from openai.types.chat import ( + ChatCompletionContentPartImageParam, + ChatCompletionContentPartTextParam, + ChatCompletionMessageParam, + ) __plugin_meta__ = PluginMetadata( name="llmchat", @@ -210,7 +214,7 @@ async def process_images(event: GroupMessageEvent) -> list[str]: ssl_context = ssl.create_default_context() ssl_context.check_hostname = False ssl_context.verify_mode = ssl.CERT_NONE - ssl_context.set_ciphers('DEFAULT@SECLEVEL=2') + ssl_context.set_ciphers("DEFAULT@SECLEVEL=2") # 下载图片并将图片转换为base64 async with httpx.AsyncClient(verify=ssl_context) as client: @@ -219,7 +223,7 @@ async def process_images(event: GroupMessageEvent) -> list[str]: logger.error(f"下载图片失败: {image_url}, 状态码: {response.status_code}") continue image_data = response.content - base64_data = base64.b64encode(image_data).decode('utf-8') + base64_data = base64.b64encode(image_data).decode("utf-8") base64_images.append(base64_data) except Exception as e: logger.error(f"处理图片时出错: {e}") @@ -288,15 +292,17 @@ async def process_messages(group_id: int): # 没有未处理的消息说明已经被处理了,跳过 if state.past_events.__len__() < 1: break - + # 将消息中的图片转成 base64 base64_images = [] if preset.support_image: base64_images = await process_images(event) # 将机器人错过的消息推送给LLM - content = ",".join([format_message(ev) for ev in state.past_events]) - content = [{"type": "text", "text": content}] + text_content = ",".join([format_message(ev) for ev in state.past_events]) + content: list[ChatCompletionContentPartTextParam | ChatCompletionContentPartImageParam] = [ + {"type": "text", "text": text_content} + ] for base64_image in base64_images: content.append({"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}})