当前位置: 首页 > news >正文

LangChain的预定义的角色

在 LangChain 中,当你使用元组 (role, content) 来定义消息时,role 可以是几种预定义的角色之一。这些角色帮助语言模型理解每条消息的来源或目的,从而更好地生成响应。以下是常见的角色类型:

常见的角色(role

  1. "system"

    • 用于设置系统的指令或指导方针。例如,“你是一个乐于助人的助手”。
    • 示例:("system", "You are a helpful assistant.")
  2. "user""human"

    • 表示来自用户的输入或问题。这是与模型进行交互的主要方式。
    • 示例:("user", "What's the weather like today?")("human", "Tell me a joke.")
  3. "assistant""ai"

    • 表示模型返回的回答。这通常用于模拟对话中的回复部分,或者作为对话历史的一部分来提供上下文。
    • 示例:("assistant", "The weather is sunny and warm.")("ai", "Sure, here's a joke for you...")
  4. 其他自定义角色

    • 虽然不常见,但理论上你可以定义自己的角色名称。然而,这样做可能不会被所有模型或工具所支持,并且可能会导致不可预见的行为。

在 LangChain 中的实际应用

当你使用 ChatPromptTemplate.from_messages() 方法时,可以像这样定义不同的角色消息:

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage# 定义包含多种角色的消息模板
prompt = ChatPromptTemplate.from_messages([("system", "You are a helpful assistant."),MessagesPlaceholder(variable_name="history"),("user", "{input}")
])# 或者使用具体的 Message 类
prompt_with_message_classes = ChatPromptTemplate.from_messages([SystemMessage(content="You are a helpful assistant."),MessagesPlaceholder(variable_name="history"),HumanMessage(content="{input}")
])

角色的选择

  • 选择合适的角色对于构建有效的提示至关重要。例如,系统消息可以帮助设定模型的行为和边界,而用户消息则是你希望模型回答的问题或陈述。
  • 保持一致性:尽量在整个项目中保持角色使用的统一性,这样可以使代码更易于理解和维护。

关于灵活性

说“使用元组 (role, content) 更加灵活”,主要是指这种形式允许你轻松地指定不同类型的消息(如系统、用户、助手等),而不需要每次都实例化相应的类(如 SystemMessage, HumanMessage 等)。这对于快速原型设计或测试非常有用。

总结

  • 角色类型:主要包括 "system", "user"/"human", 和 "assistant"/"ai"
  • 实际应用:根据需要选择合适的角色来构造你的提示模板。
  • 灵活性:使用元组 (role, content) 提供了一种简便的方式来快速定义不同类型的聊天消息,同时保持了足够的灵活性以适应各种场景。

如果你有更多关于如何具体应用这些角色的问题,或是想了解如何在特定情况下优化你的提示,请随时提问!

相关文章:

  • OpenCV + PyAutoGUI + Tkinter + FastAPI + Requests 实现的远程控制软件设计方案
  • 边缘计算网关工业物联网应用:空压机远程运维监控管理
  • 搜索二维矩阵 II
  • QMK RGB矩阵灯效配置详解:从理论到实践(实操部分)
  • 第七节第二部分:接口的综合案例
  • Selenium-Java版(环境安装)
  • 【LINUX操作系统】线程同步与互斥
  • Selenium-Java版(操作元素)
  • 毕业论文,如何区分研究内容和研究方法?
  • 级联与端到端对话系统架构解析:以Moshi为例
  • 二叉树前中后序遍历统一迭代法详解:空标记法与栈操作的艺术
  • LIO-SAM框架理解
  • 鸿蒙OSUniApp 实现精美的用户登录和注册页面#三方框架 #Uniapp
  • html5+css3实现傅里叶变换的动态展示效果(仅供参考)
  • Pytorch的Dataloader使用详解
  • 【USRP】在linux下安装python API调用
  • Oracle 中的虚拟列Virtual Columns和PostgreSQL Generated Columns生成列
  • 一分钟了解大语言模型(LLMs)
  • 基于ssm+mysql的高校设备管理系统(含LW+PPT+源码+系统演示视频+安装说明)
  • 音频分类的学习
  • KPL“王朝”诞生背后:AG和联赛一起迈向成熟
  • 国台办:80年前台湾重归中国版图,80年后不可能让台湾分裂出去
  • 习近平会见哥伦比亚总统佩特罗
  • 受美关税影响,本田预计新财年净利下降七成,并推迟加拿大建厂计划
  • 国家林草局原党组成员、副局长李春良接受审查调查
  • 中国创面修复学科发起者之一陆树良教授病逝,享年64岁