AI大模型探索之路-应用篇2:Langchain框架ModelIO模块—数据交互的秘密武器

这篇具有很好参考价值的文章主要介绍了AI大模型探索之路-应用篇2:Langchain框架ModelIO模块—数据交互的秘密武器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

一、概述

二、Model

三、Prompt

五、Output Parsers

总结


前言

随着人工智能技术的不断进步,大模型的应用场景越来越广泛。LangChain框架作为一个创新的解决方案,专为处理大型语言模型的输入输出而设计。其中,Model IO(输入输出)模块扮演着至关重要的角色,负责构建和管理数据交互的通道。本文将深入剖析ModelIO模块的工作原理、功能特性,以及如何通过该模块提升数据处理效率,进而加速AI大模型应用的开发。

一、概述

Model IO模块是LangChain框架的数据交互中枢;它不仅负责准备和处理模型的输入数据,还管理模型产出的结果。主要包括一下3部分:

  1. 提示词格式化(Input):接收原始输入数据到将其转换为模型可理解的格式
  2. 大模型调用(Model ):调用大语言模型API获得返回结果
  3. 结果解析处理(Output):将大语言模型返回的结果进行解析处理。

AI大模型探索之路-应用篇2:Langchain框架ModelIO模块—数据交互的秘密武器,AIGC-AI大模型探索之路,人工智能,langchain,AIGC,自然语言处理,AI编程,python,chatgpt

​​​​​​

二、Model

​​​​​​​1、LLMs

LLMs是LangChain 的核心组件LangChain并不提供自己的LLMs,它主要允许开发者使用统一的方式与不同的大型语言模型进行交。这包括与OpenAI、Cohere、Hugging Face等流行的LLMs服务进行接口对接。(类似于Completion,属于文本生成类模型API的支持)

from langchain_openai import OpenAI


llm = OpenAI()


llm.invoke("奥巴马当了几年总统?")

 2、Chat Model 

对于需要复杂对话管理能力的应用,LangChain框架提供了ChatModels模块。这个模块利用特殊的语言模型变体,优化了聊天场景下的信息交换和处理流程。(类似于Chat Completion,属于聊天会话类模型API的支持)

from langchain_openai import ChatOpenAI

chat_model = ChatOpenAI(model="gpt-3.5-turbo-0125")

from langchain_core.messages import (
    AIMessage,
    HumanMessage,
    SystemMessage
)

# 设置模型角色,同时设置样例
messages = [SystemMessage(content="你是一个智能助手"),
 HumanMessage(content="第二十一届世界杯在哪儿举行的?"),
 AIMessage(content="在俄罗斯"),
 HumanMessage(content="冠军是哪个球队")]

# chat_model.invoke(messages)

chat_model.invoke(messages).content

三、Prompt

通过Prompts模块提供了灵活的提示词模板和处理机制,允许用户高效地定义和格式化这些提示,以便与LLMs进行有效的交互。

 1、Prompt Template 

用于创建动态的提示词模板,可以基于一定规则插入变量。例如:

## 可以动态传入参数
from langchain.prompts import PromptTemplate

# 定义提示词模板
prompt_template = PromptTemplate.from_template(
    "Tell me a {adjective} joke about {content}."
)
# 传入参数,格式化提示词模板
prompt_template.format(adjective="funny", content="chickens")



## 也可以不传参数

from langchain.prompts import PromptTemplate


prompt_template = PromptTemplate.from_template("Tell me a joke")

prompt_template.format()

2、ChatPromptTemplate

专门用于支持聊天场景,模拟多轮对话中的上下文交换。例如:

from langchain.prompts import ChatPromptTemplate

chat_template = ChatPromptTemplate.from_messages(
    [
        ("system", "You are a helpful AI bot. Your name is {name}."),
        ("human", "Hello, how are you doing?"),
        ("ai", "I'm doing well, thanks!"),
        ("human", "{user_input}"),
    ]
)

messages = chat_template.format_messages(name="Bob", user_input="What is your name?")

chat_model.invoke(messages)

3、Few-shot prompt templates

利用有限示例来丰富大型语言模型(LLMs)的知识基础,并指导其推理过程。向模型提供针对性的样本集合,这些样本作为参考点,有效地提升模型在处理新颖问题时的逻辑推理能力和答案生成的精确度;同时还增强了模型在面对未知或复杂情境下的思维连贯性和适应性。

from langchain.prompts.few_shot import FewShotPromptTemplate

from langchain.prompts.prompt import PromptTemplate



examples  = [

{

"question": "富兰克林·德拉诺·罗斯福和亚伯拉罕·林肯中哪个担任总统的时间更长?",

"answer":

"""

这里需要后续问题吗:是。

后续问题:富兰克林·德拉诺·罗斯福担任了几年总统?

中间答案:富兰克林·德拉诺·罗斯福担任了12年的总统。

后续问题:亚伯拉罕·林肯则担任了几年总统?

中间答案:亚伯拉罕·林肯则担任了5年的总统。

因此最终答案是:富兰克林·德拉诺·罗斯福

"""

},

{

"question": "百度的创始人是何时出生的?",

"answer":

"""

这里需要后续问题吗:是。

后续问题:百度的创始人是谁?

中间答案:百度的创始人是李彦宏。

后续问题:李彦宏是什么时候出生的?

中间答案:李彦宏于1968年11月17日出生。

因此最终答案是:1968年11月17日

"""

},

{

"question": "特雷西·麦克格雷迪和姚明,谁在NBA打的赛季多?",

"answer":

"""

这里需要后续问题吗:是。

后续问题:特雷西·麦克格雷迪在NBA打了几个赛季?

中间答案:特雷西·麦克格雷迪在NBA打了9个赛季。

后续问题:姚明在NBA打了几个赛季?

中间答案:姚明在NBA打了8个赛季。

因此最终答案是:特雷西·麦克格雷迪

"""

}

]

1)使用一个样本

# 定义提示词模板
example_prompt = PromptTemplate(
    input_variables=["question", "answer"], 
    template="Question: {question}\n{answer}")
# 使用第一个样例作为参数 并输出打印
print(example_prompt.format(**examples[0]))

#输出结果
Question: 富兰克林·德拉诺·罗斯福和亚伯拉罕·林肯中哪个担任总统的时间更长?

这里需要后续问题吗:是。
后续问题:富兰克林·德拉诺·罗斯福担任了几年总统?
中间答案:富兰克林·德拉诺·罗斯福担任了12年的总统。
后续问题:亚伯拉罕·林肯则担任了几年总统?
中间答案:亚伯拉罕·林肯则担任了5年的总统。
因此最终答案是:富兰克林·德拉诺·罗斯福

2)使用所有样本

# 使用所有的样例
prompt = FewShotPromptTemplate(
    examples=examples,
    example_prompt=example_prompt,
    suffix="Question: {input}",
    input_variables=["input"]
)

print(prompt.format(input="马云比马化腾大几岁?"))
Question: 富兰克林·德拉诺·罗斯福和亚伯拉罕·林肯中哪个担任总统的时间更长?

这里需要后续问题吗:是。
后续问题:富兰克林·德拉诺·罗斯福担任了几年总统?
中间答案:富兰克林·德拉诺·罗斯福担任了12年的总统。
后续问题:亚伯拉罕·林肯则担任了几年总统?
中间答案:亚伯拉罕·林肯则担任了5年的总统。
因此最终答案是:富兰克林·德拉诺·罗斯福

Question: 百度的创始人是何时出生的?

这里需要后续问题吗:是。
后续问题:百度的创始人是谁?
中间答案:百度的创始人是李彦宏。
后续问题:李彦宏是什么时候出生的?
中间答案:李彦宏于1968年11月17日出生。
因此最终答案是:1968年11月17日

Question: 特雷西·麦克格雷迪和姚明,谁在NBA打的赛季多?

这里需要后续问题吗:是。
后续问题:特雷西·麦克格雷迪在NBA打了几个赛季?
中间答案:特雷西·麦克格雷迪在NBA打了9个赛季。
后续问题:姚明在NBA打了几个赛季?
中间答案:姚明在NBA打了8个赛季。
因此最终答案是:特雷西·麦克格雷迪

Question: 马云比马化腾大几岁?

3)调用测试

llm.invoke(prompt.format(input="特朗普的爸爸的女儿的兄弟是谁?"))
'
这里需要后续问题吗:是。
后续问题:特朗普的爸爸是谁?
中间答案:特朗普的爸爸是弗雷德·特朗普。
后续问题:弗雷德·特朗普的女儿是谁?
中间答案:弗雷德·特朗普的女儿是玛丽·安娜·特朗普。
后续问题:玛丽·安娜·特朗普的兄弟是谁?
中间答案:玛丽·安娜·特朗普的兄弟是唐纳德·特朗普。
因此最终答案是:唐纳德·特朗普'

五、Output Parsers

为了进一步处理和解析LLMs的输出结果,LangChain提供了一系列的Output Parsers。这些解析器能够将模型的文本输出转换为更加结构化的格式,便于后续的处理和使用。

from langchain.output_parsers import CommaSeparatedListOutputParser
from langchain.prompts import PromptTemplate
from langchain_openai import OpenAI

model = OpenAI()

# 将输出解析为逗号分隔的列表
parser = CommaSeparatedListOutputParser()
format_instructions = parser.get_format_instructions()

prompt = PromptTemplate(
    template="List five {subject}.\n{format_instructions}",
    input_variables=["subject"],
    partial_variables={"format_instructions": format_instructions}
)


## LCEL 链式表达式语言用法 (前一个的输入,作为后一个的输出)
chain = prompt | model | parser
chain.invoke({"subject": "ice cream flavors"})

输出:
['chocolate',
 'vanilla',
 'strawberry',
 'mint chocolate chip',
 'cookies and cream']

总结

通过以上相关的功能模块,LangChain框架的Model IO模块为大型语言模型的数据交互提供了强大支持。其精心设计的接口和工具让开发者能够更加专注于模型的实际应用,同时简化了大模型调用数据流的管理细节。降低了大模型开发门槛,使得开发者可以便捷地实现高级的AI应用能力。

探索未知,分享所知;点击关注,码路同行,寻道人生!文章来源地址https://www.toymoban.com/news/detail-850122.html

到了这里,关于AI大模型探索之路-应用篇2:Langchain框架ModelIO模块—数据交互的秘密武器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AI大模型探索之路-基础篇2:掌握Chat Completions API的基础与应用

    OpenAI 大模型提供了一些强大的 API,方便用户与 OpenAI 的大语言模型进行交互。除了上篇中讲到的Embeddings中需要用到的embeddings接口,其核心接口主要是Completions 和Chat Completions接口。 自动文本补全、用于生成各类文本任务的模型,可以根据给定的提示(prompt)自动生成和补全文本

    2024年04月12日
    浏览(44)
  • AI大模型探索之路-训练篇3:大语言模型全景解读

    大规模语言模型(Large Language Models,LLM),也称大语言模型或大型语言模型,是一种由包含数百亿以上参数的深度神经网络构建的语言模型,通常使用自监督学习方法通过大量无标注文本进行训练。 语言模型旨在对于人类语言的内在规律进行建模,从而准确预测词序列中未来

    2024年04月26日
    浏览(50)
  • AI大模型探索之路-认知篇3:大语言模型微调基础认知

    在人工智能的广阔研究领域内,大型预训练语言模型(Large Language Models, LLMs)已经成为推动技术革新的关键因素。这些模型通过在大规模数据集上的预训练过程获得了强大的语言理解和生成能力,使其能够在多种自然语言处理任务中表现出色。然而,由于预训练过程所产生的

    2024年04月24日
    浏览(46)
  • AI大模型探索之路-训练篇2:大语言模型预训练基础认知

    在人工智能的宏伟蓝图中,大语言模型(LLM)的预训练是构筑智慧之塔的基石。预训练过程通过调整庞大参数空间以吸纳数据中蕴含的知识,为模型赋予从语言理解到文本生成等多样化能力。本文将深入探讨预训练过程中的技术细节、所面临的挑战、通信机制、并行化策略以

    2024年04月25日
    浏览(46)
  • AI大模型探索之路-提升篇2:一文掌握AI大模型的核心-注意力机制

    目录 前言 一、注意力机制简介 二、注意力机制的工作原理 三、注意力机制的变体 1、自注意力(Self-Attention) 2、双向注意力(Bidirectional Attention) 3、多头注意力(Multi-Head Attention) ​4、无限注意力机制(Infini-attention) 四、注意力机制在自然语言理解中的应用 五、未来展

    2024年04月15日
    浏览(44)
  • AI大模型探索之路-训练篇5:大语言模型预训练数据准备-词元化

    AI大模型探索之路-训练篇1:大语言模型微调基础认知 AI大模型探索之路-训练篇2:大语言模型预训练基础认知 AI大模型探索之路-训练篇3:大语言模型全景解读 AI大模型探索之路-训练篇4:大语言模型训练数据集概览 在自然语言处理领域,大语言模型预训练数据准备是一个重

    2024年04月28日
    浏览(47)
  • 自学大语言模型的应用程序框架Langchain(初入门)

    现阶段chatGPT非常火热。带动了第三方开源库:LangChain火热。它是一个在大语言模型基础上实现联网搜索并给出回答、总结 PDF 文档、基于某个 Youtube 视频进行问答等等的功能的应用程序。 LangChain 是一个用于开发由语言模型驱动的应用程序的框架。 langchain的目标:最强大和差

    2024年02月07日
    浏览(51)
  • AI大模型探索之路-实战篇1:基于OpenAI智能翻译助手实战落地

    在全球化的浪潮中,语言翻译需求日益增长。市场上涌现出各式各样的翻译工具和平台,然而,免费的解决方案往往局限于简短文本的翻译。面对长篇文档,用户通常不得不转向付费服务。鉴于大型预训练语言模型(LLMs)在自然语言翻译上的显著优势,利用这些模型打造一款

    2024年04月26日
    浏览(40)
  • LangChain大模型应用落地实践(二):使用LLMs模块接入自定义大模型,以ChatGLM为例

    angChain版本:0.0.147 ;(没想到第二更LangChain已经更新到147了) 图1 大模型时间线(2023-arxiv-A Survey of Large Language Models) 模型名称 企业/高校 发布时间 ERNIE Bot(文心一言) 百度 2023年3月 ChatGLM 清华大学 2023年3月 通义千问 阿里 2023年4月 MOSS 复旦大学 2023年4月 从图1中可以看出,

    2024年02月09日
    浏览(44)
  • AI大模型探索之路-实战篇3:基于私有模型GLM-企业级知识库开发实战

    在当今信息时代,数据已经成为企业的核心资产之一。对于许多企业而言,信息安全和私密性是至关重要的,因此对外部服务提供的数据接口存在天然的警惕性。因此常规的基于在线大模型接口落地企业知识库项目,很难满足这些企业的安全需求。面对这样的挑战,只有私有

    2024年04月23日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包