开启左侧

LangChain学习——核心组件

[复制链接]
林克link02 发表于 2025-9-7 23:39:12 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
LangChain是一个用于大语言模型(LLM)应用开发的框架,它简化了LLM应用的开发难度,帮助开发者快速构建复杂的LLM应用。
一、LangChain 库简介

LangChain 包的主要价值主张是:
    组件:用于处理语言模型的可组合工具和集成。无论你是否使用 LangChain 框架的其余部分,组件都是模块化的,易于使用现成的链:用于完成高级任务的组件的内置组合
现成的链使得开始变得容易。组件使得定制现有链和构建新链变得容易。
LangChain 库本身由几个不同的包组成。
    langchain-core:基础抽象和 LangChain 表达式语言。langchain-community:第三方集成。langchain:构成应用程序认知架构的链、代理和检索策略。
二、LangChain的核心组件

        1、模型输入输出(Model I/O)

        这是与各种大语言模型进行交互的基本组件。它允许开发者管理提示(prompt),通过通用接口调用语言模型,并从模型输出中提取信息。简单来说,这个组件负责与大语言模型“对话”,将我们的请求传递给模型,并接收模型的回复。



  • 提示 prompts : 将模型输入模板化、动态选择和管理
      PromptTemplate 可以在模板中自定义变量

  1. from langchain.prompts import PromptTemplate
  2. template = PromptTemplate.from_template("给我讲个关于{subject}的故事")
  3. print(template.format(subject='星座'))
复制代码
    ChatPromptTemplate 用模板表示的对话上下文
  1. from langchain.prompts import (
  2.     ChatPromptTemplate,
  3.     HumanMessagePromptTemplate,
  4.     SystemMessagePromptTemplate,
  5. )
  6. from langchain_openai import ChatOpenAI
  7. template = ChatPromptTemplate.from_messages(
  8.     [
  9.         SystemMessagePromptTemplate.from_template(
  10.             "你是{product}的客服助手。你的名字叫{name}"),
  11.         HumanMessagePromptTemplate.from_template("{query}"),
  12.     ]
  13. )
  14. llm = ChatOpenAI()
  15. prompt = template.format_messages(
  16.     product="手机客服",
  17.     name="小花",
  18.     query="你是谁"
  19. )
  20. ret = llm.invoke(prompt)
  21. print(ret.content)
复制代码
    MessagesPlaceholder 把多轮对话变成模板
  1. from langchain.prompts import (
  2.     ChatPromptTemplate,
  3.     HumanMessagePromptTemplate,
  4.     MessagesPlaceholder,
  5. )
  6. from langchain_core.messages import AIMessage, HumanMessage
  7. human_prompt = "Translate your answer to {language}."
  8. human_message_template = HumanMessagePromptTemplate.from_template(human_prompt)
  9. chat_prompt = ChatPromptTemplate.from_messages(
  10.     [MessagesPlaceholder(variable_name="conversation"), human_message_template]
  11. )
  12. human_message = HumanMessage(content="Who is Elon Musk?")
  13. ai_message = AIMessage(
  14.     content="Elon Musk is a billionaire entrepreneur, inventor, and industrial designer"
  15. )
  16. messages = chat_prompt.format_prompt(
  17.     # 对 "conversation" 和 "language" 赋值
  18.     conversation=[human_message, ai_message], language="中文"
  19. )
  20. result = llm.invoke(messages)
  21. print(result.content)
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行更多+

Powered by Discuz! X3.4© 2001-2013 Discuz Team.( 京ICP备17022993号-3 )