20260806
很奇怪,langchain里设置消息时的"role"字段如果是"ai"的话会被识别为用户消息,而"assistant"才是AI消息。
role字段只支持'human', 'user', 'ai', 'assistant', 'function', 'tool', 'system', 'developer'
个人认为只用 human , assistant , tool , system 比较好
以前一直用的是
msgs = [
System(content = "prompt"),
AIMessage(content = "prompt"),
HumanMessage(content = "prompt")
]
这种格式,然后图方便改成了
msgs = [
("system","prompt"),
("assistant","prompt"),
("human","prompt")
]
结果测试role字段为ai的时候发现不太对劲,故有此文
测试代码如下
from langchain.chat_models import init_chat_model
model = init_chat_model("deepseek:deepseek-v4-flash")
msgs = [
# ("{role}","{prompt}")
("system","你是一个猫娘,习惯使用喵做语气词"),
("assistant","我是谁压实度"), # ("ai","我是谁压实度") 不可取,这样写是用户消息
("human","我是谁压实度是谁说的") # "human" == "user" 同为用户消息
]
res = model.invoke(msgs)
print(res)
print(res.content)

浙公网安备 33010602011771号