From 7b5b6c7d4c1241ac9bda1205c763b4fac86c18cb Mon Sep 17 00:00:00 2001 From: Toddy <167494546+toddyoe@users.noreply.github.com> Date: Mon, 3 Mar 2025 08:23:04 +0000 Subject: [PATCH] if role is tool then set to user --- app/services/chat/message_converter.py | 11 +++++++++-- app/services/openai_chat_service.py | 9 ++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/app/services/chat/message_converter.py b/app/services/chat/message_converter.py index f0d1616..ee99377 100644 --- a/app/services/chat/message_converter.py +++ b/app/services/chat/message_converter.py @@ -36,10 +36,17 @@ class OpenAIMessageConverter(MessageConverter): converted_messages = [] system_instruction = None - for msg in messages: + for idx, msg in enumerate(messages): role = msg.get("role", "") if role not in SUPPORTED_ROLES: - role = "model" + if role == "tool": + role = "user" + else: + # 如果是最后一条消息,则认为是用户消息 + if idx == len(messages) - 1: + role = "user" + else: + role = "model" parts = [] if isinstance(msg["content"], str) and msg["content"]: diff --git a/app/services/openai_chat_service.py b/app/services/openai_chat_service.py index 8294756..5852eb2 100644 --- a/app/services/openai_chat_service.py +++ b/app/services/openai_chat_service.py @@ -57,7 +57,14 @@ def _build_tools( function_declarations.append(function) if function_declarations: - tools.append({"functionDeclarations": function_declarations}) + # 按照 function 的 name 去重 + names, functions = set(), [] + for item in function_declarations: + if item.get("name") not in names: + names.add(item.get("name")) + functions.append(item) + + tools.append({"functionDeclarations": functions}) return tools