Merge pull request #525 from RockChinQ/feat-finish-reason-param

[Feat] 为NormalMessageResponded事件添加finish_reason参数
This commit is contained in:
Junyan Qin
2023-08-01 14:40:14 +08:00
committed by GitHub
7 changed files with 26 additions and 10 deletions
+2 -1
View File
@@ -26,4 +26,5 @@ bin/
test_* test_*
venv/ venv/
hugchat.json hugchat.json
qcapi qcapi
/*.yaml
+1 -1
View File
@@ -129,7 +129,7 @@ class ChatCompletionRequest(RequestBase):
"type": "text", "type": "text",
"content": choice0['message']['content'] "content": choice0['message']['content']
}, },
"finish_reason": "stop" "finish_reason": choice0["finish_reason"]
} }
], ],
"usage": resp["usage"] "usage": resp["usage"]
+16 -4
View File
@@ -194,8 +194,15 @@ class Session:
# 请求回复 # 请求回复
# 这个函数是阻塞的 # 这个函数是阻塞的
def append(self, text: str=None) -> str: def append(self, text: str=None) -> tuple[str, str]:
"""向session中添加一条消息,返回接口回复""" """向session中添加一条消息,返回接口回复
Args:
text (str): 用户消息
Returns:
tuple[str, str]: (接口回复, finish_reason)
"""
self.last_interact_timestamp = int(time.time()) self.last_interact_timestamp = int(time.time())
@@ -209,7 +216,7 @@ class Session:
event = pkg.plugin.host.emit(plugin_models.SessionFirstMessageReceived, **args) event = pkg.plugin.host.emit(plugin_models.SessionFirstMessageReceived, **args)
if event.is_prevented_default(): if event.is_prevented_default():
return None return None, None
config = pkg.utils.context.get_config() config = pkg.utils.context.get_config()
max_length = config.prompt_submit_length max_length = config.prompt_submit_length
@@ -244,7 +251,12 @@ class Session:
total_tokens = 0 total_tokens = 0
finish_reason: str = ""
for resp in pkg.utils.context.get_openai_manager().request_completion(prompts): for resp in pkg.utils.context.get_openai_manager().request_completion(prompts):
finish_reason = resp['choices'][0]['finish_reason']
if resp['choices'][0]['message']['type'] == 'text': # 普通回复 if resp['choices'][0]['message']['type'] == 'text': # 普通回复
res_text += resp['choices'][0]['message']['content'] res_text += resp['choices'][0]['message']['content']
@@ -305,7 +317,7 @@ class Session:
self.just_switched_to_exist_session = False self.just_switched_to_exist_session = False
self.set_ongoing() self.set_ongoing()
return res_ans if res_ans[0] != '\n' else res_ans[1:] return res_ans if res_ans[0] != '\n' else res_ans[1:], finish_reason
# 删除上一回合并返回上一回合的问题 # 删除上一回合并返回上一回合的问题
def undo(self) -> str: def undo(self) -> str:
+1
View File
@@ -88,6 +88,7 @@ NormalMessageResponded = "normal_message_responded"
session: pkg.openai.session.Session 会话对象 session: pkg.openai.session.Session 会话对象
prefix: str 回复文字消息的前缀 prefix: str 回复文字消息的前缀
response_text: str 响应文本 response_text: str 响应文本
finish_reason: str 响应结束原因
returns (optional): returns (optional):
prefix: str 修改后的回复文字消息的前缀 prefix: str 修改后的回复文字消息的前缀
+1 -1
View File
@@ -20,7 +20,7 @@ class ContinueCommand(AbstractCommandNode):
session = pkg.openai.session.get_session(session_name) session = pkg.openai.session.get_session(session_name)
text = session.append() text, _ = session.append()
reply = [text] reply = [text]
+3 -2
View File
@@ -40,7 +40,7 @@ def process_normal_message(text_message: str, mgr, config, launcher_type: str,
try: try:
prefix = "[GPT]" if config.show_prefix else "" prefix = "[GPT]" if config.show_prefix else ""
text = session.append(text_message) text, finish_reason = session.append(text_message)
# 触发插件事件 # 触发插件事件
args = { args = {
@@ -49,7 +49,8 @@ def process_normal_message(text_message: str, mgr, config, launcher_type: str,
"sender_id": sender_id, "sender_id": sender_id,
"session": session, "session": session,
"prefix": prefix, "prefix": prefix,
"response_text": text "response_text": text,
"finish_reason": finish_reason,
} }
event = pkg.plugin.host.emit(plugin_models.NormalMessageResponded, **args) event = pkg.plugin.host.emit(plugin_models.NormalMessageResponded, **args)
+2 -1
View File
@@ -407,10 +407,11 @@ NormalMessageResponded = "normal_message_responded"
session: pkg.openai.session.Session 会话对象 session: pkg.openai.session.Session 会话对象
prefix: str 回复文字消息的前缀 prefix: str 回复文字消息的前缀
response_text: str 响应文本 response_text: str 响应文本
finish_reason: str 响应结束原因
returns (optional): returns (optional):
prefix: str 修改后的回复文字消息的前缀 prefix: str 修改后的回复文字消息的前缀
reply: list 替换回复消息组件列表,元素为YiriMirai支持的消息组件 reply: list 替换回复消息组件列表
""" """
SessionFirstMessageReceived = "session_first_message_received" SessionFirstMessageReceived = "session_first_message_received"