Skip to content

Commit 3625640

Browse files
authored
Merge pull request #51 from ghost-in-moss/fix/fix-develop-message-missing
fix: fix developer message missed
2 parents 384540d + 98b1221 commit 3625640

File tree

3 files changed

+22
-11
lines changed

3 files changed

+22
-11
lines changed

ghostos/core/messages/openai.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from openai.types.chat.chat_completion_assistant_message_param import ChatCompletionAssistantMessageParam, FunctionCall
99
from openai.types.chat.chat_completion_message_tool_call_param import ChatCompletionMessageToolCallParam
1010
from openai.types.chat.chat_completion_system_message_param import ChatCompletionSystemMessageParam
11+
from openai.types.chat.chat_completion_developer_message_param import ChatCompletionDeveloperMessageParam
1112
from openai.types.chat.chat_completion_user_message_param import ChatCompletionUserMessageParam
1213
from openai.types.chat.chat_completion_function_message_param import ChatCompletionFunctionMessageParam
1314
from ghostos.core.messages import (
@@ -189,6 +190,10 @@ def _parse_message(self, message: Message) -> Iterable[ChatCompletionMessagePara
189190
return [
190191
ChatCompletionSystemMessageParam(content=message.get_content(), role="system")
191192
]
193+
elif message.role == Role.DEVELOPER:
194+
return [
195+
ChatCompletionDeveloperMessageParam(content=message.get_content(), role="developer")
196+
]
192197
elif message.role == Role.USER:
193198
item = ChatCompletionUserMessageParam(content=message.get_content(), role="user")
194199
if message.name:

ghostos/framework/llms/openai_driver.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -118,33 +118,38 @@ def parse_message_params(self, messages: List[Message]) -> List[ChatCompletionMe
118118
messages = self.parse_by_compatible_settings(messages)
119119
return list(self._parser.parse_message_list(messages, self.model.message_types))
120120

121+
@staticmethod
122+
def _parse_system_to_develop(messages: List[Message]) -> List[Message]:
123+
changed = []
124+
for message in messages:
125+
if message.role == Role.SYSTEM:
126+
message = message.model_copy(update={"role": Role.DEVELOPER.value}, deep=True)
127+
changed.append(message)
128+
return changed
129+
121130
def parse_by_compatible_settings(self, messages: List[Message]) -> List[Message]:
122131
# developer role test
123132
if self.service.compatible.use_developer_role:
124-
changed = []
125-
for message in messages:
126-
if message.role == Role.SYSTEM:
127-
message = message.model_copy(update={"role": Role.DEVELOPER}, deep=True)
128-
changed.append(message)
129-
messages = changed
133+
messages = self._parse_system_to_develop(messages)
130134
else:
131135
changed = []
132136
for message in messages:
133137
if message.role == Role.DEVELOPER:
134-
message = message.model_copy(update={"role": Role.SYSTEM}, deep=True)
138+
message = message.model_copy(update={"role": Role.SYSTEM.value}, deep=True)
135139
changed.append(message)
136140
messages = changed
137141

138142
# allow system messages
139143
if not self.service.compatible.allow_system_in_messages:
140144
changed = []
145+
count = 0
141146
for message in messages:
142-
if message.role == Role.SYSTEM or message.role == Role.DEVELOPER:
147+
if count > 0 and message.role == Role.SYSTEM or message.role == Role.DEVELOPER:
143148
name = f"__{message.role}__"
144-
message = message.model_copy(update={"role": Role.USER, "name": name}, deep=True)
149+
message = message.model_copy(update={"role": Role.USER.value, "name": name}, deep=True)
145150
changed.append(message)
151+
count += 1
146152
messages = changed
147-
148153
return messages
149154

150155
def _chat_completion(self, prompt: Prompt, stream: bool) -> Union[ChatCompletion, Iterable[ChatCompletionChunk]]:
@@ -238,6 +243,7 @@ def _reasoning_completion(self, prompt: Prompt) -> ChatCompletion:
238243
)
239244
# include_usage = ChatCompletionStreamOptionsParam(include_usage=True) if stream else NOT_GIVEN
240245
messages = prompt.get_messages()
246+
messages = self._parse_system_to_develop(messages)
241247
messages = self.parse_message_params(messages)
242248
if not messages:
243249
raise AttributeError("empty chat!!")

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "ghostos"
3-
version = "0.1.0"
3+
version = "0.1.1"
44
description = "A framework offers an operating system simulator with a Python Code Interface for AI Agents"
55
authors = ["zhuming <thirdgerb@gmail.com>", "Nile Zhou <nilezhou123@gmail.com>"]
66
license = "MIT"

0 commit comments

Comments
 (0)