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)

posted @ 2026-08-06 19:11  Leeszz  阅读(4)  评论(0)    收藏  举报