From 2bfd1c0bf24735c880e73cd0dccacd525bdcb9ce Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Mon, 27 Jan 2025 19:25:28 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E8=87=AA=E5=8A=A8=E7=A7=BB=E9=99=A4=20?= =?UTF-8?q?ollama=20=E4=B8=8D=E6=94=AF=E6=8C=81=20tool=20=E7=9A=84?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E7=9A=84=20tool=20=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/provider/sources/openai_source.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/astrbot/core/provider/sources/openai_source.py b/astrbot/core/provider/sources/openai_source.py index 9a0e72fb..71b992ee 100644 --- a/astrbot/core/provider/sources/openai_source.py +++ b/astrbot/core/provider/sources/openai_source.py @@ -103,10 +103,20 @@ class ProviderOpenAIOfficial(Provider): if tool_list: payloads['tools'] = tool_list - completion = await self.client.chat.completions.create( - **payloads, - stream=False - ) + try: + completion = await self.client.chat.completions.create( + **payloads, + stream=False + ) + except BaseException as e: + if 'does not support Function Calling' \ + or 'does not support tools' in e: # ollama + del payloads['tools'] + logger.debug(f"模型 {self.model_name} 不支持 tools,已自动移除") + completion = await self.client.chat.completions.create( + **payloads, + stream=False + ) assert isinstance(completion, ChatCompletion) logger.debug(f"completion: {completion}")