删除了add_file_content

This commit is contained in:
Windpicker-owo
2025-08-01 12:49:09 +08:00
parent 28ea2e7a0c
commit fcaa78f9a5
4 changed files with 14 additions and 30 deletions

View File

@@ -117,13 +117,14 @@ class BaseClient:
async def get_audio_transcriptions( async def get_audio_transcriptions(
self, self,
model_info: ModelInfo, model_info: ModelInfo,
message_list: list[Message], audio_base64: str,
extra_params: dict[str, Any] | None = None, extra_params: dict[str, Any] | None = None,
) -> APIResponse: ) -> APIResponse:
""" """
获取音频转录 获取音频转录
:param model_info: 模型信息 :param model_info: 模型信息
:param message_list: 消息列表,包含音频内容 :param audio_base64: base64编码的音频数据
:extra_params: 附加的请求参数
:return: 音频转录响应 :return: 音频转录响应
""" """
raise RuntimeError("This method should be overridden in subclasses") raise RuntimeError("This method should be overridden in subclasses")

View File

@@ -2,6 +2,7 @@ import asyncio
import io import io
import json import json
import re import re
import base64
from collections.abc import Iterable from collections.abc import Iterable
from typing import Callable, Any, Coroutine, Optional from typing import Callable, Any, Coroutine, Optional
from json_repair import repair_json from json_repair import repair_json
@@ -536,19 +537,20 @@ class OpenaiClient(BaseClient):
async def get_audio_transcriptions( async def get_audio_transcriptions(
self, self,
model_info: ModelInfo, model_info: ModelInfo,
message_list: list[Message], audio_base64: str,
extra_params: dict[str, Any] | None = None, extra_params: dict[str, Any] | None = None,
) -> APIResponse: ) -> APIResponse:
""" """
获取音频转录 获取音频转录
:param model_info: 模型信息 :param model_info: 模型信息
:param message_list: 消息列表,包含音频内容 :param audio_base64: base64编码的音频数据
:return: 转录响应 :extra_params: 附加的请求参数
:return: 音频转录响应
""" """
try: try:
raw_response = await self.client.audio.transcriptions.create( raw_response = await self.client.audio.transcriptions.create(
model=model_info.model_identifier, model=model_info.model_identifier,
file=message_list[0].content[0], file=("audio.wav", io.BytesIO(base64.b64decode(audio_base64))),
extra_body=extra_params extra_body=extra_params
) )
except APIConnectionError as e: except APIConnectionError as e:

View File

@@ -1,6 +1,5 @@
import base64
from enum import Enum from enum import Enum
from io import BytesIO
# 设计这系列类的目的是为未来可能的扩展做准备 # 设计这系列类的目的是为未来可能的扩展做准备
@@ -34,7 +33,7 @@ class Message:
class MessageBuilder: class MessageBuilder:
def __init__(self): def __init__(self):
self.__role: RoleType = RoleType.User self.__role: RoleType = RoleType.User
self.__content: list[tuple[str, str] | str | tuple[str, BytesIO]] = [] self.__content: list[tuple[str, str] | str] = []
self.__tool_call_id: str | None = None self.__tool_call_id: str | None = None
def set_role(self, role: RoleType = RoleType.User) -> "MessageBuilder": def set_role(self, role: RoleType = RoleType.User) -> "MessageBuilder":
@@ -55,20 +54,6 @@ class MessageBuilder:
self.__content.append(text) self.__content.append(text)
return self return self
def add_file_content(
self, file_name: str, file_base64: str
) -> "MessageBuilder":
"""
添加文件内容
:param file_name: 文件名(包含类型后缀)
:param file_base64: 文件的base64编码
:return: MessageBuilder对象
"""
if not file_name or not file_base64:
raise ValueError("文件名和base64编码不能为空")
self.__content.append((file_name, BytesIO(base64.b64decode(file_base64))))
return self
def add_image_content( def add_image_content(
self, image_format: str, image_base64: str self, image_format: str, image_base64: str
) -> "MessageBuilder": ) -> "MessageBuilder":

View File

@@ -114,11 +114,6 @@ class LLMRequest:
Returns: Returns:
(Optional[str]): 生成的文本描述或None (Optional[str]): 生成的文本描述或None
""" """
# 请求体构建
message_builder = MessageBuilder()
message_builder.add_file_content(file_name="audio.wav", file_base64=voice_base64)
messages = [message_builder.build()]
# 模型选择 # 模型选择
model_info, api_provider, client = self._select_model() model_info, api_provider, client = self._select_model()
@@ -128,7 +123,7 @@ class LLMRequest:
client=client, client=client,
request_type=RequestType.AUDIO, request_type=RequestType.AUDIO,
model_info=model_info, model_info=model_info,
message_list=messages, audio_base64=voice_base64,
) )
return response.content or None return response.content or None
@@ -249,6 +244,7 @@ class LLMRequest:
temperature: Optional[float] = None, temperature: Optional[float] = None,
max_tokens: Optional[int] = None, max_tokens: Optional[int] = None,
embedding_input: str = "", embedding_input: str = "",
audio_base64: str = ""
) -> APIResponse: ) -> APIResponse:
""" """
实际执行请求的方法 实际执行请求的方法
@@ -283,7 +279,7 @@ class LLMRequest:
assert message_list is not None, "message_list cannot be None for audio requests" assert message_list is not None, "message_list cannot be None for audio requests"
return await client.get_audio_transcriptions( return await client.get_audio_transcriptions(
model_info=model_info, model_info=model_info,
message_list=message_list, audio_base64=audio_base64,
extra_params=model_info.extra_params, extra_params=model_info.extra_params,
) )
except Exception as e: except Exception as e: