mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-08-30 14:17:14 +00:00
fix: bugs in requesters (#1401)
This commit is contained in:
committed by
GitHub
parent
da86384e58
commit
015be6008d
@@ -27,7 +27,7 @@ class DeepseekChatCompletions(chatcmpl.OpenAIChatCompletions):
|
|||||||
) -> llm_entities.Message:
|
) -> llm_entities.Message:
|
||||||
self.client.api_key = use_model.token_mgr.get_token()
|
self.client.api_key = use_model.token_mgr.get_token()
|
||||||
|
|
||||||
args = extra_args.copy()
|
args = {}
|
||||||
args['model'] = use_model.model_entity.name
|
args['model'] = use_model.model_entity.name
|
||||||
|
|
||||||
if use_funcs:
|
if use_funcs:
|
||||||
@@ -47,7 +47,7 @@ class DeepseekChatCompletions(chatcmpl.OpenAIChatCompletions):
|
|||||||
args['messages'] = messages
|
args['messages'] = messages
|
||||||
|
|
||||||
# 发送请求
|
# 发送请求
|
||||||
resp = await self._req(args, extra_body=self.requester_cfg['args'])
|
resp = await self._req(args, extra_body=extra_args)
|
||||||
|
|
||||||
if resp is None:
|
if resp is None:
|
||||||
raise errors.RequesterError('接口返回为空,请确定模型提供商服务是否正常')
|
raise errors.RequesterError('接口返回为空,请确定模型提供商服务是否正常')
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class GiteeAIChatCompletions(chatcmpl.OpenAIChatCompletions):
|
|||||||
) -> llm_entities.Message:
|
) -> llm_entities.Message:
|
||||||
self.client.api_key = use_model.token_mgr.get_token()
|
self.client.api_key = use_model.token_mgr.get_token()
|
||||||
|
|
||||||
args = extra_args.copy()
|
args = {}
|
||||||
args['model'] = use_model.model_entity.name
|
args['model'] = use_model.model_entity.name
|
||||||
|
|
||||||
if use_funcs:
|
if use_funcs:
|
||||||
@@ -44,7 +44,7 @@ class GiteeAIChatCompletions(chatcmpl.OpenAIChatCompletions):
|
|||||||
|
|
||||||
args['messages'] = req_messages
|
args['messages'] = req_messages
|
||||||
|
|
||||||
resp = await self._req(args, extra_body=self.requester_cfg['args'])
|
resp = await self._req(args, extra_body=extra_args)
|
||||||
|
|
||||||
message = await self._make_msg(resp)
|
message = await self._make_msg(resp)
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import openai.types.chat.chat_completion_message_tool_call as chat_completion_me
|
|||||||
import httpx
|
import httpx
|
||||||
|
|
||||||
from .. import entities, errors, requester
|
from .. import entities, errors, requester
|
||||||
from ....core import entities as core_entities, app
|
from ....core import entities as core_entities
|
||||||
from ... import entities as llm_entities
|
from ... import entities as llm_entities
|
||||||
from ...tools import entities as tools_entities
|
from ...tools import entities as tools_entities
|
||||||
|
|
||||||
@@ -19,12 +19,10 @@ class ModelScopeChatCompletions(requester.LLMAPIRequester):
|
|||||||
|
|
||||||
client: openai.AsyncClient
|
client: openai.AsyncClient
|
||||||
|
|
||||||
requester_cfg: dict
|
default_config: dict[str, typing.Any] = {
|
||||||
|
'base_url': 'https://api-inference.modelscope.cn/v1',
|
||||||
def __init__(self, ap: app.Application):
|
'timeout': 120,
|
||||||
self.ap = ap
|
}
|
||||||
|
|
||||||
self.requester_cfg = self.ap.provider_cfg.data['requester']['modelscope-chat-completions']
|
|
||||||
|
|
||||||
async def initialize(self):
|
async def initialize(self):
|
||||||
self.client = openai.AsyncClient(
|
self.client = openai.AsyncClient(
|
||||||
@@ -37,6 +35,7 @@ class ModelScopeChatCompletions(requester.LLMAPIRequester):
|
|||||||
async def _req(
|
async def _req(
|
||||||
self,
|
self,
|
||||||
args: dict,
|
args: dict,
|
||||||
|
extra_body: dict = {},
|
||||||
) -> chat_completion.ChatCompletion:
|
) -> chat_completion.ChatCompletion:
|
||||||
args['stream'] = True
|
args['stream'] = True
|
||||||
|
|
||||||
@@ -46,7 +45,7 @@ class ModelScopeChatCompletions(requester.LLMAPIRequester):
|
|||||||
|
|
||||||
tool_calls = []
|
tool_calls = []
|
||||||
|
|
||||||
resp_gen: openai.AsyncStream = await self.client.chat.completions.create(**args)
|
resp_gen: openai.AsyncStream = await self.client.chat.completions.create(**args, extra_body=extra_body)
|
||||||
|
|
||||||
async for chunk in resp_gen:
|
async for chunk in resp_gen:
|
||||||
# print(chunk)
|
# print(chunk)
|
||||||
@@ -107,7 +106,6 @@ class ModelScopeChatCompletions(requester.LLMAPIRequester):
|
|||||||
if chunk
|
if chunk
|
||||||
else None
|
else None
|
||||||
)
|
)
|
||||||
return await self.client.chat.completions.create(**args)
|
|
||||||
|
|
||||||
async def _make_msg(
|
async def _make_msg(
|
||||||
self,
|
self,
|
||||||
@@ -129,10 +127,11 @@ class ModelScopeChatCompletions(requester.LLMAPIRequester):
|
|||||||
req_messages: list[dict],
|
req_messages: list[dict],
|
||||||
use_model: entities.LLMModelInfo,
|
use_model: entities.LLMModelInfo,
|
||||||
use_funcs: list[tools_entities.LLMFunction] = None,
|
use_funcs: list[tools_entities.LLMFunction] = None,
|
||||||
|
extra_args: dict[str, typing.Any] = {},
|
||||||
) -> llm_entities.Message:
|
) -> llm_entities.Message:
|
||||||
self.client.api_key = use_model.token_mgr.get_token()
|
self.client.api_key = use_model.token_mgr.get_token()
|
||||||
|
|
||||||
args = self.requester_cfg['args'].copy()
|
args = {}
|
||||||
args['model'] = use_model.name if use_model.model_name is None else use_model.model_name
|
args['model'] = use_model.name if use_model.model_name is None else use_model.model_name
|
||||||
|
|
||||||
if use_funcs:
|
if use_funcs:
|
||||||
@@ -156,19 +155,20 @@ class ModelScopeChatCompletions(requester.LLMAPIRequester):
|
|||||||
args['messages'] = messages
|
args['messages'] = messages
|
||||||
|
|
||||||
# 发送请求
|
# 发送请求
|
||||||
resp = await self._req(args)
|
resp = await self._req(args, extra_body=extra_args)
|
||||||
|
|
||||||
# 处理请求结果
|
# 处理请求结果
|
||||||
message = await self._make_msg(resp)
|
message = await self._make_msg(resp)
|
||||||
|
|
||||||
return message
|
return message
|
||||||
|
|
||||||
async def call(
|
async def invoke_llm(
|
||||||
self,
|
self,
|
||||||
query: core_entities.Query,
|
query: core_entities.Query,
|
||||||
model: entities.LLMModelInfo,
|
model: entities.LLMModelInfo,
|
||||||
messages: typing.List[llm_entities.Message],
|
messages: typing.List[llm_entities.Message],
|
||||||
funcs: typing.List[tools_entities.LLMFunction] = None,
|
funcs: typing.List[tools_entities.LLMFunction] = None,
|
||||||
|
extra_args: dict[str, typing.Any] = {},
|
||||||
) -> llm_entities.Message:
|
) -> llm_entities.Message:
|
||||||
req_messages = [] # req_messages 仅用于类内,外部同步由 query.messages 进行
|
req_messages = [] # req_messages 仅用于类内,外部同步由 query.messages 进行
|
||||||
for m in messages:
|
for m in messages:
|
||||||
@@ -182,7 +182,9 @@ class ModelScopeChatCompletions(requester.LLMAPIRequester):
|
|||||||
req_messages.append(msg_dict)
|
req_messages.append(msg_dict)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return await self._closure(query=query, req_messages=req_messages, use_model=model, use_funcs=funcs)
|
return await self._closure(
|
||||||
|
query=query, req_messages=req_messages, use_model=model, use_funcs=funcs, extra_args=extra_args
|
||||||
|
)
|
||||||
except asyncio.TimeoutError:
|
except asyncio.TimeoutError:
|
||||||
raise errors.RequesterError('请求超时')
|
raise errors.RequesterError('请求超时')
|
||||||
except openai.BadRequestError as e:
|
except openai.BadRequestError as e:
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ metadata:
|
|||||||
zh_CN: 魔搭社区
|
zh_CN: 魔搭社区
|
||||||
spec:
|
spec:
|
||||||
config:
|
config:
|
||||||
- name: base-url
|
- name: base_url
|
||||||
label:
|
label:
|
||||||
en_US: Base URL
|
en_US: Base URL
|
||||||
zh_CN: 基础 URL
|
zh_CN: 基础 URL
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class MoonshotChatCompletions(chatcmpl.OpenAIChatCompletions):
|
|||||||
) -> llm_entities.Message:
|
) -> llm_entities.Message:
|
||||||
self.client.api_key = use_model.token_mgr.get_token()
|
self.client.api_key = use_model.token_mgr.get_token()
|
||||||
|
|
||||||
args = extra_args.copy()
|
args = {}
|
||||||
args['model'] = use_model.model_entity.name
|
args['model'] = use_model.model_entity.name
|
||||||
|
|
||||||
if use_funcs:
|
if use_funcs:
|
||||||
@@ -51,7 +51,7 @@ class MoonshotChatCompletions(chatcmpl.OpenAIChatCompletions):
|
|||||||
args['messages'] = messages
|
args['messages'] = messages
|
||||||
|
|
||||||
# 发送请求
|
# 发送请求
|
||||||
resp = await self._req(args, extra_body=self.requester_cfg['args'])
|
resp = await self._req(args, extra_body=extra_args)
|
||||||
|
|
||||||
# 处理请求结果
|
# 处理请求结果
|
||||||
message = await self._make_msg(resp)
|
message = await self._make_msg(resp)
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import openai
|
import openai
|
||||||
|
import typing
|
||||||
|
|
||||||
from . import chatcmpl
|
from . import chatcmpl
|
||||||
from ....core import app
|
|
||||||
|
|
||||||
|
|
||||||
class PPIOChatCompletions(chatcmpl.OpenAIChatCompletions):
|
class PPIOChatCompletions(chatcmpl.OpenAIChatCompletions):
|
||||||
@@ -11,9 +11,7 @@ class PPIOChatCompletions(chatcmpl.OpenAIChatCompletions):
|
|||||||
|
|
||||||
client: openai.AsyncClient
|
client: openai.AsyncClient
|
||||||
|
|
||||||
requester_cfg: dict
|
default_config: dict[str, typing.Any] = {
|
||||||
|
'base_url': 'https://api.ppinfra.com/v3/openai',
|
||||||
def __init__(self, ap: app.Application):
|
'timeout': 120,
|
||||||
self.ap = ap
|
}
|
||||||
|
|
||||||
self.requester_cfg = self.ap.provider_cfg.data['requester']['ppio-chat-completions']
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ metadata:
|
|||||||
zh_CN: 派欧云
|
zh_CN: 派欧云
|
||||||
spec:
|
spec:
|
||||||
config:
|
config:
|
||||||
- name: base-url
|
- name: base_url
|
||||||
label:
|
label:
|
||||||
en_US: Base URL
|
en_US: Base URL
|
||||||
zh_CN: 基础 URL
|
zh_CN: 基础 URL
|
||||||
|
|||||||
@@ -445,8 +445,8 @@ class HttpClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// export const httpClient = new HttpClient("https://version-4.langbot.dev");
|
// export const httpClient = new HttpClient("https://version-4.langbot.dev");
|
||||||
export const httpClient = new HttpClient('http://localhost:5300');
|
// export const httpClient = new HttpClient('http://localhost:5300');
|
||||||
// export const httpClient = new HttpClient('/');
|
export const httpClient = new HttpClient('/');
|
||||||
|
|
||||||
// 临时写法,未来两种Client都继承自HttpClient父类,不允许共享方法
|
// 临时写法,未来两种Client都继承自HttpClient父类,不允许共享方法
|
||||||
export const spaceClient = new HttpClient('https://space.langbot.app');
|
export const spaceClient = new HttpClient('https://space.langbot.app');
|
||||||
|
|||||||
Reference in New Issue
Block a user