You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Langsmith含MessagesPlaceholder的混合模板数据集创建异常问题

问题原因及解决方法

1. 聊天历史格式不符合规范

你传入的chat_history只是简单的字符串元组,LangSmith无法识别其消息角色(用户/助手/系统),导致无法在UI中正确解析和展示示例。必须使用结构化的消息格式,可选两种形式:

  • LangChain的消息对象(如HumanMessage、AIMessage)
  • 包含role和content字段的字典

2. 数据集未指定聊天类型

创建数据集时未设置data_type=ls_schemas.DataType.chat,LangSmith默认按普通文本数据集处理,无法适配聊天类示例的展示和编辑逻辑。

修正后的代码示例

from langchain_core.messages import SystemMessage, HumanMessage
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.prompts.chat import MessagesPlaceholder
import langsmith as ls
from langsmith import schemas as ls_schemas

# 原Prompt定义保持不变
prompt_template = ChatPromptTemplate([
    SystemMessage("Here goes a mustache variable: {{var_1}}"),
    MessagesPlaceholder("chat_history")
],
    template_format="mustache")

# 修正示例的聊天历史格式
examples = [
    {"var_1": 10, "chat_history": [HumanMessage("hi!")]},
    {"var_1": 12, "chat_history": [HumanMessage("hola!")]},
    # 也可使用字典格式替代消息对象
    # {"var_1": 10, "chat_history": [{"role": "user", "content": "hi!"}]},
]

dataset_name = "test_2"
client = ls.Client()

# 创建数据集时指定聊天类型
dataset = client.create_dataset(
    dataset_name=dataset_name,
    data_type=ls_schemas.DataType.chat
)

# 插入示例
client.create_examples(dataset_id=dataset.id, examples=examples)

额外说明

  • 修正后,LangSmith UI会以聊天会话形式展示chat_history字段,同时正常显示var_1这类普通变量。
  • 数据集设置为chat类型后,UI的「+ Example」按钮会出现适配聊天消息的输入界面,支持添加不同角色的消息,同时也能添加自定义变量(如var_1)。

内容的提问来源于stack exchange,提问作者Facundo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:42:38