LangChain入门(四)

简化神经元模型6 -- Hindmarsh-Rose Model 简化神经元模型 6 Hindmarsh-Rose Model 阅读详情

本文主要讲解LangChain的核心组件(消息,提示词模板,少样本提示)。

1.消息

消息是聊天模型中的通信单位,用于表示聊天模型的输入和输出。以及可能与对话关联的任何其他上下文或元数据。

LLM消息都有一个角色和内容以及因LLM的不同而不同的附加元数据。

1.1角色分类

消息角色:系统角色,用户角色,助理角色,工具角色。

系统角色用于告诉聊天模型如何行为并提供额外的上下文。

用户角色表示用户与模型交互的输入,通常以文本或其他交互式输入的形式。

助理角色表示来自于模型的响应。

工具角色用于在检索外部数据或将工具调用的结果传回模型的消息。

1.2消息内容

表示多模态数据 (例如,图像、⾳频、视频)的消息⽂本或字典列表的内容。内容的具体格式可能因底层不同的 LLM ⽽异。⽬前,⼤多数模型都⽀持⽂本作为主要内容类型,对多模态数据的支持仍然有限。

1.3消息其他元数据

元数据 描述
ID   消息标识符
Name 名称允许区分具有相同角色的不同实体。并非所有型号都支持此功能
Metadata 有关消息的其他信息,例如时间戳、令牌使⽤情况
Tool Calls 模型发出的⼀个或多个⼯具的调用请求
 示例:
[
    {
        "role": "user",
        "content": "Hello, how are you?",
    },
    {
        "role": "assistant",
        "content": "I'm doing well, thank you for asking.",
    },
    {
        "role": "user",
        "content": "Can you tell me a joke?",
    }
]

1.2LangChain消息

它提供了一种统一的格式可以跨聊天模型使用,允许用户使用不同的聊天模型,例如:
openai_model = init_chat_model("gpt-4o-mini", model_provider="openai")
anthropic_model = init_chat_model("claude-3-5-sonnet-latest",
model_provider="anthropic")
deepseek_model = init_chat_model("deepseek-chat", model_provider="deepseek")
google_genai_model = init_chat_model("gemini-2.5-flash",
model_provider="google_genai")
model = init_chat_model(...)

对于输入输出,统一使用LangChain的消息格式。它主要分成五种:

1)SystemMessage:用于启动AI模型的行为并提供额外的上下文。

2)HumanMessage:人类消息表示用户与模型交互的输入。

3)AIMessage:这是来自于模型的响应。其中可以包括文本或调用工具的请求。

4)AIMessageChunk:通常在生成聊天模型时流式传输响应。

5)ToolMessage:这表示一条角色为tool的消息,其中包含调用工具的结果。

1.3缓存历史消息

在与大预言模型交互的过程中,我们常常体验到与智能助手进行连贯多轮对话的便利性。让我们将AI回复给我们的响应跟着新的用户消息一起发给聊天模型试试。如下:
from langchain_core.messages import HumanMessage, AIMessage
from langchain_openai import ChatOpenAI

model=ChatOpenAI(model="gpt-4o-mini")
messages=[
    HumanMessage(content="I am Bob"),
    AIMessage(content="Hello Bob! How can I assist you today?"),
    HumanMessage(content="What is your name?"),
]
model.invoke(messages).pretty_print()

从结果看只需要将历史信息重新发给聊天模型就可以实现多轮对话的功能。

1.4管理历史信息

我们首先要理解多轮对话的核心概念:上下文窗口。它指的是LLM在一次处理请求的时候所能查看和处理的最大token数量。token在自然语言处理中它是文本的基本单位。它并不等同于一个单词而是一个更细粒度的划分。

对于英文,1个token近似于4个字符,对于中文一个汉字近似于1.5个token。

形象来说,上下文窗口就像一个固定大小的工作台,再把token比作一个积木零件,把大模型比作一个工匠。工匠需要频出模型,必须把所需的零件放在工作台上,一边拼装一边把品好的部分也放在工作台,整个过程中所有积木的总数不能超过工作台的最大容量。

2.提示词模板

2.1概念

提示词模板是被广泛于应用到构建大语言模型应用的各个环节。

它类似于编程中的字符串格式化的功能。你创建一个带有占位符的模板然后在运行的时候,用具体的值填充这些占位符,从而生成一个最终发送给LLM的完整提示词。

2.2用法

2.2.1字符串模板

LangChain提供了PromptTemplate类来轻松实现这一功能。它实现了标准的Runnabl接口。示例如下:

from langchain_core.prompts import PromptTemplate

prompt_template = PromptTemplate.from_template(("Translate the following into {language}"))
print(prompt_template.invoke({"language":"chinese"}))

PromptTemplate这个类参数如下:

template:提示模板

input_variables:需要其值作为提示输入的变量的名称列表。

内置方法:

        from_template():从模板定义提示模板。方法返回一个PromptTemplate实例。

因此上述定义提示模板的方式还可以这样:

prompt_template = PromptTemplate(
    input_variables=["language"],
    template="Translate the following into {language}",
)

2.2聊天消息模板

ChatPromptTemplate模板:专门为LangChain聊天模型设计。可以方便地构建包含SystemMessage,HumanMessage,AIMessage的消息模板。代码如下:
from langchain_core.prompts import ChatPromptTemplate

prompt_template=ChatPromptTemplate(
    [
        ("system","translate into {language}"),
        ("user","{text}"),
    ]
)
#[SystemMessage(content='translate into Chinese', additional_kwargs={}, response_metadata={}),
# HumanMessage(content='what is your name?', additional_kwargs={}, response_metadata={})]

messagesValue=prompt_template.invoke(
    {
        "language":"Chinese",
        "text":"what is your name?"
    }
)
messages=messagesValue.to_messages()
print(messages)

现在我们可以将结果发送给任何一个LLM来获取答案。

from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

prompt_template=ChatPromptTemplate(
    [
        ("system","translate into {language}"),
        ("user","{text}"),
    ]
)
#[SystemMessage(content='translate into Chinese', additional_kwargs={}, response_metadata={}),
# HumanMessage(content='what is your name?', additional_kwargs={}, response_metadata={})]

messagesValue=prompt_template.invoke(
    {
        "language":"Chinese",
        "text":"what is your name?"
    }
)
model=ChatOpenAI(model="gpt-4o-mini")
messages=messagesValue.to_messages()
parser=StrOutputParser()
chain=model | parser
print(chain.invoke(messages))

由于ChatPromptTemplate同样实现Runnable接口,因此我们可以通过链来调用。

如下所示:

from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

prompt_template=ChatPromptTemplate(
    [
        ("system","translate into {language}"),
        ("user","{text}"),
    ]
)
#[SystemMessage(content='translate into Chinese', additional_kwargs={}, response_metadata={}),
# HumanMessage(content='what is your name?', additional_kwargs={}, response_metadata={})]

# messagesValue=prompt_template.invoke(
#     {
#         "language":"Chinese",
#         "text":"what is your name?"
#     }
# )
model=ChatOpenAI(model="gpt-4o-mini")
# messages=messagesValue.to_messages()
parser=StrOutputParser()
chain= prompt_template|model | parser
#print(chain.invoke(messages))
for token in chain.stream(
        {
            "language":"English",
            "text":"我叫斯蒂芬"
        }
):
    print(token,end="|")

2.3消息占位符

在上面的ChatPromptTemplate中我看到了如何格式化两条信息,每条消息都是一个字符串。但是如果我们希望将消息插入到特定位置怎么办?使用MessagePlaceholder。

它负责在特定位置添加消息列表。

from langchain_core.messages import HumanMessage, AIMessage
from langchain_core.prompts import PromptTemplate, MessagesPlaceholder, ChatPromptTemplate

prompt_template = ChatPromptTemplate([
    ("system","你是一个聊天助手"),
    MessagesPlaceholder("msgs")
])
messages_to_pass=[
    HumanMessage(content="中国是哪里?"),
    AIMessage(content="中国首都是北京"),
    HumanMessage(content="那法国呢")
]
formatted_prompt=prompt_template.invoke({"msgs":messages_to_pass})
print(formatted_prompt)

2.4使用LangChain Hub的提示词模板

LangChain Hub是一个用于上传浏览拉取和管理提示词的地方。

随着 LLM 的发展,提⽰变得越来越重要。LangChain 正在打造⼀个与像 GitHub 这样的传统平台。GitHub长期以来⼀直是共享和协作代码的⾸选平台。于是推出了 LangChain Hub 平台。
下面以这个平台的一个提示词模板为例子,演示一下如何使用提示。
from openai import Client
from langchain_openai import ChatOpenAI

from TEST23 import lazy_prompt

client=Client()
prompt=client.pull_prompt("hardkothai/prompt-maker",include_model=True)
model=ChatOpenAI(model="gpt-4o-mini")
chain=model|prompt
while True:
    task=input("\n你的任务是什么?(输入quit退出聊天)\n")
    if task=="quit":
        break
    lazy_prompt=input("\n你当前的提示是什么?(输入quit退出聊天)\n")
    if lazy_prompt=="quit":
        break
    print("\n Response:")
    chain.invoke({'lazy_prompt':lazy_prompt,'task':task}).pretty_print()

3.少样本提示

少样本提示是一种通过向LLM提供少量具体示例或样本,来教会它如何执行某项特定任务的技术。

3.1实现少样本提示

from langchain_core.prompts import PromptTemplate, ChatPromptTemplate,FewShotChatMessagePromptTemplate
from openai.resources import Chat
examples = [
    {"input": "2 🦜 2", "output": "4"},
    {"input": "2 🦜 3", "output": "5"},
]
example_prompt = ChatPromptTemplate(
    [
        ("human","{input}"),
        ("ai","{output}"),
    ]
)
#[HumanMessage(content='2 🦜 2', additional_kwargs={}, response_metadata={}), 
# AIMessage(content='4', additional_kwargs={}, response_metadata={}, tool_calls=[], invalid_tool_calls=[]), 
# HumanMessage(content='2 🦜 3', additional_kwargs={}, response_metadata={}), 
# AIMessage(content='5', additional_kwargs={}, response_metadata={}, tool_calls=[], invalid_tool_calls=[])]
few_shot_prompt = FewShotChatMessagePromptTemplate(
    example_prompt=example_prompt,
    examples=examples,
)
print(few_shot_prompt.invoke({}).to_messages())

FewShotChatMessagePromptTemplate它也实现了Runnable接口。

类初始化参数说明:example:样本示例。example_prompt:用于格式化单个示例。

类方法说明:.invoke()方法。输入一个字典给他,返回完整的提示内容PromptValue:

1)to_string()可以返回字符串。2)to_messages()可以将提示作为消息列表返回。

2)to_messages()可以将提示作为消息列表返回。

(补充:在Python里面[]代表列表,里面可以放数字、字符串、对象等,可以增删改查。{}代表字典或集合,()代表元组,用圆括号一旦创建就不能改,比列表更安全、更快。)

3.2示例选择器

一旦我们有了示例数据集,就需要考虑提示中应该有多少个示例。在LangChain里面示例选择器可以帮我们从一组示例的集合中根据具体策略选择正确的示例子集构建少样本提示。

选择策略有:

1)Length:根据特定长度内可以容纳的数量选择示例。

2)Similarity:使用输入和示例之间的语义相似性来决定选择哪些示例。

3)MMR:使用输入和示例之间的最大边际相关性来决定要选择哪些示例。

4)Ngram:使用输入和示例之间的ngram重叠来决定要选择哪些示例。

3.2.1按长度选择示例

第一步。给一组输入和输出互为反义词。

第二步。定义PromptTemplate字符串模板,包含输入和输出的两个占位符。

第三步。定义义 LengthBasedExampleSelector长度示例选择器,设置初始示例集与最大长度。

第四步。定义一个FewShotPromptTemplate模板对象,用于实例化示例,将示例转化为聊天信息。

第五步,打印消息结果。

from langchain.agents.middleware import dynamic_prompt
from langchain_core.example_selectors import LengthBasedExampleSelector
from langchain_core.prompts import PromptTemplate, FewShotPromptTemplate

examples=[
    {"input": "happy", "output": "sad"},
    {"input": "tall", "output": "short"},
    {"input": "energetic", "output": "lethargic"},
    {"input": "sunny", "output": "gloomy"},
    {"input": "windy", "output": "calm"},
]
#定义单个示例长什么样
example_prompt=PromptTemplate(
    input_variables=["input", "output"],
    template="Input:{input}\nOutput:{output}",
)
#创建【按长度自动选示例】的工具
example_selector=LengthBasedExampleSelector(
    examples=examples,
    example_prompt=example_prompt,
    max_length=25,
    # ⽤于获取字符串⻓度的函数,⽤于确定包含哪些⽰例。
    # 如果没有指定,它是作为默认值提供的。
    # 该函数返回⼀个整数,表⽰字符串中由换⾏符或空格分隔的“单词”数量
    # get_text_length: Callable[[str], int] = lambda x: len(re.split("\n| ",x))
)
#组装最终动态提示模板
dynamic_prompt=FewShotPromptTemplate(
    example_selector=example_selector,
    example_prompt=example_prompt,
    prefix="给出每个输入的反义词",
    suffix="Input:{adjective}\nOutput",
    input_variables=["adjective"],
)
print(
    dynamic_prompt.invoke({"adjective":"big"}).to_messages()[0].content
)

3.2.2按照语义相似性选择示例

LangChain能根据输入和示例之间的语义相似性来决定选择哪些示例,它能通过查找与输入具有最大余弦相似性的嵌入示例来实现这一点。

实现按语义相似性选择示例的示例选择器是:SemanticSimilarity ExampleSelector类。

内置方法:

        from_examples():根据示例集生成语义相似示例选择器。

        add_example(example:dict[str,str]):将新示例添加到列表中。

        select_examples(input_variables:dict[str,str])->list[dict]:根据输入选择要使用的示例。

如何使用语义相似示例选择器:

1)给一个示例集,输入和输出互为反义词。

2)定义PromptTemplate字符串模板,包含输入和输出两个占位符。

3)定义SemanticSimilarityExampleSelector语义相似示例选择器,设置初始示例集与嵌入API接口。

4)定义一个FewShotPromptTemplate模板对象,用于实例化示例将示例转化为聊天消息。

5)打印消息结果

from langchain_chroma import Chroma
from langchain_core.example_selectors import SemanticSimilarityExampleSelector
from langchain_core.prompts import ChatPromptTemplate, PromptTemplate, FewShotPromptTemplate
from langchain_openai import OpenAIEmbeddings
from langgraph_sdk.schema import Input

examples = [
    {"input": "happy", "output": "sad"},
    {"input": "tall", "output": "short"},
    {"input": "energetic", "output": "lethargic"},
    {"input": "sunny", "output": "gloomy"},
    {"input": "windy", "output": "calm"},
]
#字符串模板
example_prompt=PromptTemplate(
    input_variables=["input","output"],
    template="Input:{input}\nOutput:{output}",
)
#语义相似示例选择器
example_selector=SemanticSimilarityExampleSelector.from_examples(
    examples,
    #嵌入类用于生成用于度量语义相似度的嵌入。
    OpenAIEmbeddings(),
    #用于存储嵌入并对其进行显示类搜索
    Chroma,
    #生成示例的数量
    k=1,
)
#用于实例化示例的模板
similar_prompt=FewShotPromptTemplate(
    #挑选好的参考答案
    example_selector=example_selector,
    #答案的排版格式
    example_prompt=example_prompt,
    #题目要求
    prefix="给出每个输⼊的反义词",
    # 新题目 + 留空让学生写答案
    suffix="Input: {adjective}\nOutput:",
    #告诉模板:我后面会传入一个变量,叫 adjective(你要查询的单词)
    input_variables=["adjective"],
)
print(
similar_prompt.invoke({"adjective": "worried"}).to_messages()[0].content
)

3.2.3按照最大编辑相关性选择示例

什么是最大边际相关性?它是一种重新排序算法,使用语义相似性作为基础工具,从一个候选集中挑选出一组节能代表查询主题又彼此多样化的结果。

语义相似性与最大边际相关性对比:

【语义相似性】就像⾯试官衡量每个应聘者与职位要求的匹配度。他会给每个应聘者打⼀个分数。

【最大边际相关性】就像团队经理(MMR算法)要组建⼀个团队。⽬标是选出⼀组“精华”结果,

⽽不是⼀个单⼀结果。

MMR算法的使用场景:

        1)推荐系统:推荐与用户兴趣相关但又不同类型的物品。

        2)文档摘要:从长文档中选择能代表主旨又包含不同信息的句子,避免摘要内容的重复。

        3)RAG:在从知识库中检索完一段相关文档之后,使用MMR进行去重喝多样化的筛选。再交给LLM生成答案。

实现方法:该示例选择器是MaxMarginalRelevanceExampleSelector,内置方法:

from_examples() :根据示例集生成 MMR 示例选择器

        输入:

                examples:示例列表

                exbeddings:初始化的嵌入API接口

                vectorstore_cls:向量存储数据库接口类

                k:最终要选择的示例的数量。

add_example(example: dict[str, str]) :将新示例添加到列表中。

select_examples(input_variables: dict[str, str]) → list[dict] :根据输入选择要使用的示例。

3.2.4通过ngram重叠选择示例

什么是ngram?它是指一个文本序列中连续的n个词或者字符。

什么是ngram重叠?通过计算他们之间共同拥有的ngram数量来一种衡量两端文本相似度的地方。

实现方式略。

Android 自动亮度 /则需要从BrightnessConfigure类中读取两个数组源:config_autoBrightnessLevels和config_autoBrightnessDisplayValuesNits。) 或知道其在DisplayPowerController()构造的时候初始化的。曲线设置好了,就应该扔代码里跑起来,模型建起来了,这个过程是咋样的呢?//它将负责曲线的创建,自动背光值的计算等。通过搜索配置关键词( 阅读详情

相关推荐

从理论到实践:利用FilterSolutions高效设计7阶椭圆低通滤波器

本文详细介绍了如何利用FilterSolutions软件高效设计7阶椭圆低通滤波器。文章从理论入手,对比了巴特沃斯、切比雪夫等经典滤波器特性,阐述了在要求高衰减陡度(如62dB抑制)和严格通带波纹(0.2dB)时,椭圆滤波器是最优选择。通过分步实战教程,指导读者完成从软件参数设置、性能验证到实际电路布局与调试的全过程,助力射频与高速数字信号处理工程师将理论转化为可靠设计。

jupi8的博客 549

langchain入门系列之四 链结构的使用

所谓的链结构,就是在相同的标准下,不同模块组成一条处理任务的流水线。优点是链提高了模块的标准化和复用性,缺点是增加了工程的复杂度和冗余。

笑笑布丁的博客 658

SAP PO开发-端到端配置

1.登录PO系统,选择system landscape,将外围系统的系统信息(Software Component以下简称SC)注册到PO系统中。2.点击products注册外围系统信息。3.选择New 新建 按钮:创建一个新的系统和版本。4.输入产品名称、供应商、版本号等信息。然后点击:Next。5.设置instance 名称,然后点击Next。6.最后设置软件组件的名称,然后点击Finish。

P9QCer的博客 1562

LangChain 82 LangGraph 从入门到精通四

在构建图表时,您需要传入一个状态模式。然后,每个节点都会返回操作以更新该状态。这些操作可以是在状态上设置特定属性(例如,覆盖现有值),也可以是向现有属性添加内容。是设置还是添加是通过注释您用于构建图表的状态对象来表示的。

AI架构师易筋 3378

300Kg载重履带式无人车底盘定制开发技术详解

通过精准的需求分析、科学的方案设计、严格的研发与测试以及完善的交付与培训流程,可以打造出符合客户需求的优质产品。300Kg载重履带式无人车底盘的定制开发,旨在打造一款承载能力强、行驶稳定、适应复杂地形的无人运输平台。根据应用场景选择合适的动力源,并进行性能优化,确保无人车在载重情况下仍能保持稳定的行驶速度和动力输出。根据需求分析结果,设计无人车底盘的总体方案,包括动力系统选择、结构设计、负载管理策略等。进行详细的研发工作,包括零部件的选型与采购、样机的制作与调试等。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 953

光伏储能交直流微电网Matlab/Simulink仿真模型

首先是光伏储能交直流微电网,这个也是我还是之前在硕士期间在做光伏扶贫项目时候搭建的仿真,仿真由光伏、蓄电池及负载组成的独立直流微电网,提出电压和电流分段式协同控制策略。接下来我将主要更新关于光伏、风电、储能微电网系统相关的内容,包括具体建模和控制。

2401_89292556的博客 781

LangChain实战快速入门笔记(四)--LangChain使用之Memory

大多数的大模型应用程序都会有一个会话接口,允许我们进行多轮的对话,并有一定的上下文记忆能力。❗❗但实际上,模型本身是不会记忆任何上下文的,只能依靠用户本身的输入去产生输出。 🤖:如何实现记忆功能呢?  实现这个记忆功能,就需要额外的模块去保存我们和模型对话的上下文信息,然后在下一次请求时,把所有的历史信息都输入给模型,让模型输出最终结果。而在 LangChain 中,提供这个功能的模块就称为 Memory(记忆) ,用于存储用户和模型交互的历史信息。  Memory,是LangChain中用于多轮对话中保

weixin_43665177的博客 765

如何在项目中集成bpmn-process-designer

文章目录一、bpmn-process-designer是什么?二、使用步骤1.将下面地址的代码下载到本地2.替换dependencies和devDependencies3.拷贝package目录4.在main.js引入代码5.拷贝src5.拷贝App.vue代码注意事项 一、bpmn-process-designer是什么? bpmn-process-designer是一个基于 bpmn.js,Vue 2.x 和 ElementUI 开发的流程设计器(前端部分),支持监听器,扩展属性,表单等配置,可自由扩展

weixin_43550766的博客 9450

真正通俗易懂的Langchain入门学习(四)

Chain就像流水线,适合多步骤任务)📊 实现自动分析Excel生成可视化报告。🤖 创建能记住300轮对话的聊天机器人。:支持PDF/Word/网页。:防止超过模型token限制。🔧 用1小时搭建智能客服系统。B) Chain串联多个步骤。A) 单个LLM直接处理。:自动客服工单处理系统。:把文字变成数学向量。

caridle的专栏 1022

电力电子论文(TPE、TTE)投稿经验分享

电力电子顶刊论文投稿经验

橙子的博客 2万+

嵌入式面经篇八——进程&线程

记录一些招聘公司在招聘嵌入式软件岗位时的一些问题,此文为第八篇。进程上文:是指进程由用户态切换到内核态时需要保存用户态时CPU寄存器中的值,进程状态以及堆栈上的内容。即保存当前进程的状态,以便再次执行该进程时,能够恢复切换时的状态,继续执行。进程下文:是指切换到内核态后执行的程序,即进程运行在内核空间的部分。中断上文:硬件通过中断触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也要传递给内核,内核通过这些参数进行中断处理。

明天你好的博客 1851

LangChain:构建一个Agent(入门篇四)

本文介绍了如何使用LangChain构建一个能够调用搜索引擎工具的智能代理系统。主要内容包括:1)环境配置,通过硅基流动API接入大语言模型;2)定义Tavily搜索工具并绑定到语言模型;3)创建具有推理能力的代理,能够自动判断是否需要调用工具;4)实现消息流式传输,实时展示中间处理过程;5)添加记忆功能,支持多轮对话上下文保持。该代理系统展示了语言模型与外部工具协同工作的典型模式:模型负责推理决策,工具执行具体操作,结果反馈给模型进行后续处理。文章还提供了完整的代码示例,涵盖了从基础功能到高级特性的实现过

gzu_01的博客 1232

FTU电科院检测学习笔记-规划

如果写到最后,还非常的有动力和兴趣,可能会举出一些特定的例子来,但不保证一定是这样。

sixtome 1091

【LangChain】(四)如何使用LangChain构建强大的RAG问答应用:从入门到精通!

我们将深入探讨如何使用LangChain开发一个简单的RAG问答应用。我们将逐步介绍典型的问答架构,讨论相关的LangChain组件,并展示如何跟踪和理解我们的应用。

万物皆有灵 1587

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LangChain 入门系列④:核心组件之 Memory 快速入门指南

大多数的大模型应用程序都会有一个会话接口,允许我们进行多轮的对话,并有一定的上下文记忆能力。

瓦罗兰特顶级C位的博客 1191

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LangChain入门④:从结构化输出到RAG实战

LLM 的知识止于训练截止日期,更读不到你的私有文档;而把整本文档塞进提示词,既会超出上下文窗口又贵得离谱。RAG(Retrieval-Augmented Generation,检索增强生成)的解法是"先检索、再生成":提前把文档切成小块并向量化入库,提问时只把最相关的几个片段动态塞进提示词。成本低:不需要重新训练模型,只做一次离线索引;知识可随时更新:换一份文档、重建一次向量库即可;能给出答案出处:命中片段可以回传前端做溯源展示。切分 → 向量化建库 → 检索 → 生成。

i235Uranium的博客 491

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

LangChain入门(四) 部署应用程序

【代码】LangChain入门(四) 部署应用程序。

Angellyouran的专栏 381

LangChain从入门到实践(四)——Parser输出解析器

在LangChain中,输出解析器位于模型和最终数据输出之间,作为数据处理的中间层。

2301_81888214的博客 813

Langchain 入门教程四:消息Messages

消息有不同的角色类型。

十三月的博客 204

langchain从入门到精通(四)——Model组件及使用技巧

【代码】langchain从入门到精通(四)——Model组件及使用技巧。

swpucwf的博客 777

【可能是全网最丝滑的LangChain教程】四、快速入门Retrieval Chain

LangChain中Retrieval Chain是什么,介绍Retrieval Chain的基本用法

Jeffray1991的博客 1860

Langchain从入门到精通(四)——Model组件及使用技巧

在 LangChain 中,无论是 LLM 亦或者 Chat Model 都可以接受 PromptValue/字符串/消息列表 作为参数,内部会根据模型的类型自动转换成字符串亦或者消息列表,屏蔽了不同模型的差异。

2301_81940605的博客 797

Langchain 快速入门(四):搭建强大的AI Agent

AI Agent 不仅仅是一个能聊天的机器人(如普通的 ChatGPT),而是一个能够感知环境、进行推理、自主决策并调用工具来完成特定任务的智能系统,更够完成更为复杂的AI场景需求。

2301_81888214的博客 543

LangChain实战入门(四):融合篇——打造有记忆、能协作的AI应用

现在,我们的AI已经具备了很强的单次任务处理能力。但在真实的人机交互中,我们期望的不仅仅是"一问一答",而是连续的、有上下文的对话,是能够记住历史、理解语境的智能体验。

优秀、有趣的AI知识共享! 1927

从0到1开发AI Agent(智能体)(四)| LangChain 的快速入门

AI Agent,即人工智能代理,一般直接叫做智能体。是一种能够感知环境、做出决策并采取行动的系统。这些系统能够执行被动的任务,也能够主动寻找解决问题的方法,适应环境的变化,并在没有人类直接干预的情况下做出决策。

lyy2017175913的博客 2165

LangChain4j入门AI(四)使用AiServices高级功能-聊天记忆

本文介绍了如何在LangChain4j中实现聊天记忆功能,这对于开发智能体至关重要。通过AiServices,开发者可以以声明式的方式将Java接口映射到大型语言模型(LLM)组件,从而实现对模型调用、输入输出转换、记忆管理与流式响应的高度抽象与自动化。文章详细探讨了两种会话记忆的实现方案:chatMemory和chatMemoryProvider,并通过代码示例展示了如何自定义AIService和使用AiServices构建实例来实现记忆聊天功能。此外,文章还解析了AiServices的build源码和C

持续学习ing 1827
上一篇: LangChain入门(三)
下一篇: LangChain入门(五)
晚风吹北巷
博客等级 码龄4年 120粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值