bugfix(ChatExcel): Tongyi proxyllm response with 'InvalidParameter:User and assistant need to appear alternately in the message' (#781)

Try to fix #756
This commit is contained in:
明天 2023-11-06 18:02:59 +08:00 committed by GitHub
commit 47b1d0dad4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -36,7 +36,7 @@ def tongyi_generate_stream(
if message.role == ModelMessageRoleType.HUMAN: if message.role == ModelMessageRoleType.HUMAN:
history.append({"role": "user", "content": message.content}) history.append({"role": "user", "content": message.content})
for message in messages: for message in messages:
if message.role == ModelMessageRoleType.SYSTEM: if message.role == ModelMessageRoleType.SYSTEM or message.role == ModelMessageRoleType.HUMAN:
history.append({"role": "user", "content": message.content}) history.append({"role": "user", "content": message.content})
# elif message.role == ModelMessageRoleType.HUMAN: # elif message.role == ModelMessageRoleType.HUMAN:
# history.append({"role": "user", "content": message.content}) # history.append({"role": "user", "content": message.content})
@ -45,17 +45,24 @@ def tongyi_generate_stream(
else: else:
pass pass
# temp_his = history[::-1] temp_his = history[::-1]
temp_his = history
last_user_input = None last_user_input = None
for m in temp_his: for m in temp_his:
if m["role"] == "user": if m["role"] == "user":
last_user_input = m last_user_input = m
break break
if last_user_input: temp_his = history
prompt_input = None
for m in temp_his:
if m["role"] == "user":
prompt_input = m
break
if last_user_input and prompt_input and last_user_input != prompt_input:
history.remove(last_user_input) history.remove(last_user_input)
history.append(last_user_input) history.remove(prompt_input)
history.append(prompt_input)
gen = Generation() gen = Generation()
res = gen.call( res = gen.call(