企业网站外包,厦门网站开发排名,深圳网站制作建设哪家专业,网络管理登录入口写在前面的话
当我们提到人工智能时也就是AI的时候呢#xff0c;我们大多数人首先想到的可能就是像chatGPT这样的聊天机器人#xff0c;这些聊天机器人通过理解#xff0c;还有生成自然语言可以给我们提供一些信息#xff0c;这个是AI最终的形态吗或者AI最终的形式吗…写在前面的话
当我们提到人工智能时也就是AI的时候呢我们大多数人首先想到的可能就是像chatGPT这样的聊天机器人这些聊天机器人通过理解还有生成自然语言可以给我们提供一些信息这个是AI最终的形态吗或者AI最终的形式吗
比尔盖茨在他的个人博客中写道现有的软件形式然而相当的笨拙软件的未来是智能代理即AI agent。他认为5年之内每个人都将拥有自己的智能助理现在所有的软件都值得用智能方式重构一遍他提到了人工智能代理agent不仅会改变每个人与计算机交互的方式它将颠覆软件行业带来自我们从键入命令到点击图标以来最大的一个计算革命。
比如说你是一家商业咨询公司每天有大量的数据表格要处理那不仅要把数据库里面的原始数据 做清洗然后还要抽取成表格还要从这个表格里面去做统计分析然后最后得到一些商业洞察那么这个时候通用的类chatGPT是无法满足的最理想的方式呢就是使用AI的能力构建属于自己的业务的一个chatbot或者代理机器人把数据库连接到agent输入你最终想要的洞察问题不一会儿这个报告就出来了。甚至可以更进一步比如连接上我们的电子邮箱直接就发送出去了。包括在银行、电商平台等各个行业都是可以广泛应用的。它可以有效提高客户互动的质量和效率。同时在类似数据可视化领域agent能够将原始数据转化为交互图表和图形让数据分析变得更加有效和直观这对于类似市场分析、健康数据追踪等领域尤其重要。为理解大量复杂信息提供了一种新的方式。
我们大家都知道未来是AI的时代但是呢很多人都会困惑说我如何去迎接AI时代是学一堆AI工具怎么用吗是练好提示词怎么写作吗其实这些都是比较表面的一些东西如果说打算投身到这个行业我觉得agent是可以为大家提供一个选择的。个人来说学习agent之后可以结合自己的业务和长处去开发各种的agent来实现它业务的一个倍增我们可以看到现在随着AI的发展对这个专业人才需求也不断增加。
文章三大部分介绍
首先第一部分会深入了解AIGC行业会从这个大模型的发展历程聊起介绍主流的大模型讨论他们现在的不足然后会引入微调和launching的解决方案还会去拆解AIGC行业从论文算法到应用去理解一些行业术语最后我们会通过虚拟项目进行需求分析和技术选型揭开后面的内容。
第二部分会深入这个launching的这个框架通过学习launching的7大板块系统的理解agent开发基础理论。比如说在本地环境如何运行launching理解model IO的概念掌握提示词模板的应用还会构建大模型外脑这种知识库做增强检索、文本切分、下单数据库等等等等这样的一些内容。
最后第三部分通过一个完整的虚拟项目把前面学到的知识付诸实践。从项目准备、产品分析、架构设计到开发实现过程。后面还有扩展的部分比如数字人、智能语音等等。
AI2.0时代应用开发者机会
大语言模型(LLM)基础与发展
LLMLarge Language Model大语言模型是人工智能领域中一种强大的自然语言处理模型其发展历史可以追溯到词向量、词嵌入技术的出现逐步演进到对句子和文本的理解最终实现了对复杂语境的全面理解和生成。 词向量与词嵌入 词向量是将单词映射到向量空间的技术最早由Yoshua Bengio等人提出。这使得单词之间的语义关系能够以向量的形式被表示。词嵌入技术Word Embeddings通过训练将单词映射到连续的实值向量空间中从而捕捉了单词之间的语义关系。Word2Vec、GloVe和FastText等算法为这一技术的发展做出了重要贡献。 句向量与全文向量 句向量技术是将整个句子映射到一个向量空间中捕捉句子的语义信息。Doc2Vec和Skip-Thought Vectors是一些早期的方法通过训练模型将句子映射到连续向量空间中。全文向量是将整个文档或文本片段表示为一个向量的技术捕捉了文档的整体语义信息。这为模型理解文本上下文提供了基础。 理解上下文 随着深度学习技术的发展神经网络模型开始在自然语言处理领域展现出强大的性能。特别是循环神经网络RNN和长短期记忆网络LSTM等模型使得模型能够更好地理解文本的上下文信息。Transformer模型的出现进一步提高了对文本上下文的理解能力其自注意力机制允许模型在处理长文本时能够更好地捕捉到远距离的依赖关系而不受长期依赖问题的困扰。 大模型介绍 随着硬件计算能力的提升和大规模数据集的可用性增加研究人员开始尝试构建更大的语言模型。其中最著名的就是OpenAI的GPT系列Generative Pre-trained Transformer包括GPT、GPT-2、GPT-3等模型。这些模型利用了Transformer的架构并通过大规模的预训练数据和参数数量的增加实现了前所未有的语言理解和生成能力。这些大型语言模型可以通过预训练的方式学习语言的统计规律和语义信息并在具体任务上进行微调因此被广泛应用于文本生成、问答系统、机器翻译等领域取得了令人瞩目的成果。
综上所述LLM的发展史可以看作是从对单词到句子再到全文的理解能力逐步提升最终通过大规模预训练的深度神经网络模型实现了对复杂语境的全面理解和生成。
国内外主要LLM及特点介绍 hugging face
提供简单易用的NLP模型和工具库搞ai界的github。
Hugging Face – The AI community building the future.
大模型的不足以及解决方案 不具备记忆能力上下文窗口的限制实时信息更新慢新旧知识难以区分无法灵活操控外部系统无法为领域问题提供专业靠谱的答案。
AIGC产业拆解以及常见名词
aigc产业拆解 aigc常用名词 应用级开发者应该如何拥抱AIGC 这张这张图上越往上他的整个难度大门槛高然后越往下机会就会越多。
机会最少的是基座大模型就是类似chatGPT、国内的百川智能这样的特点就是消耗算力特别巨大需要大量的资本来支持。做一次全量的训练的话现在可能在几千万美金所以只有巨头和大资本是玩得起的。相应的来说的话他的职业机会是比较少的。
再往下就是我们的行业垂直大模型就是在所谓的在基座模型基础上去灌入一些行业的数据在基础大模型上做微调职业机会稍微多了一点。但是对于我们应用级开发者呢还是机会不是那么多。
再往下看就是所谓的AI原生应用不管是ToB还是ToC的这块都有大量的机会。我们这些传统做互联网、科技公司、应用开发公司、科技创业公司、应用开发者都有大量的机会存在。它是一个比较重要的一个位置也是未来一个爆发的赛道。就像苹果一样有自己的APP store。
所以说在这个时候其实是有大量的职业机会或者大量的这种应用开发的机会存在的我们传统的应用开发者去快速转型去跟上这个赛道的一个绝佳的机会。有点像当年这个苹果刚发布APP store时候那个状态。可以说所有的应用都值得用AI啊重新做一遍。
比如说AI加文旅你计划做一次旅行你的旅游的这个机器人会帮你找到适合你预算的酒店然后智能体呢还会知道你你在一年中什么时候去旅行根据他对你总是尝试这个新的目的地的了解或者你喜欢故地重游的行为的了解他会向你建议旅游目的地当他被询问的时候他智能就会根据你的兴趣和冒险的倾向为你推荐做可以做的事情还能帮你预定你喜欢的餐厅。如果没有这样的一个AI场景的话你现在做这些事情可能需要旅行社帮你去定制。但是呢使用了智能体加这个场景之后我们就可以解决。不远的未来我们每个人都会有自己的私人智能体助理。
agent开发这一个层面上需要做哪些准备工作呢或者说我们转型需要掌握一些什么东西。
1、首先就是要学习机器学习和深度学习的一些基础知识大模型层面和行业模型层面有一个基础的知识准备。
2、需要有Python语言基础这个方向大量的项目都是用Python来开发的
3、学会使用AI例如开发工具和框架
4、应用开发是离不开行业场景和业务流程的所以需要对行业的场景有一个深入的了解抓到里面最关键的部分可能成功的几率就会比较高
一、LangChain框架初识
LangChain是什么以及发展过程 LangChain是一个2022年10月25日开源的框架其主要作用是帮助开发者更加高效、便捷地在实际应用程序中整合和利用大型语言模型LLMs例如GPT-3等并且扩展这些模型的能力使其能够与外部数据源、API和其他服务进行交互。通过LangChain开发者可以构建上下文感知的应用程序使得语言模型不仅能基于自身训练内容生成回复还能结合实时信息和历史上下文进行推理和决策。其特点包括模块化组件设计、支持数据感知的链式调用结构以及增强的语言模型代理功能从而简化了开发流程并促进了基于LLM的创新型应用的诞生如聊天机器人、智能问答系统、搜索引擎等高级NLP应用场景。
LangChain是react论文论文的落地实现那么这个react表示的是什么react其实是reason加act的一个合并缩写也就是推理加行动。那么这篇论文啊为什么是launching的基础它有什么特别。
人类的这个AI的这个方面我们终极的目标是希望实现AGI就是所谓的通用AI那么在通用AI之前我们现在已经走到了大模型这个阶段大模型要实现像人脑一样的思考首先就是要反过来想人类是怎么解决问题的人类之所以拥有独一无二的认知能力重要原因是我们不会采取无意义的行动。人类行动的背后都是有原因的都是有一个逻辑链条。我们人类通过行动去获取外部世界的信息这些信息呢又可以让我们形成更加完善的逻辑链条进而调整后续的行动。
但是一个AI的程序它天然不具备这样的能力那比如说我们跟open AI交互的时候很多时候其实是一个直接的输入输出的一个关系他没有这样的一个思维链也没有这样的一个逻辑链。模型会给一些推理过程但是答案也是错的因为它只推理没有获得外部信息他这种情况下做的最好的只能是把他预训练时候底膜里面的东西知识拿出来去关联那关联不到他就会瞎编就会出现幻觉。
那么react也就是这个reason加act这样的一个范式就是想驱动LLM大模型来用类似这样的方法去工作可以让大模型像人脑一样去思考。
LangChain的github地址langchain-ai/langchain: Build context-aware reasoning applications (github.com)
LangChain能做什么它有什么能力 LangChain的核心思想是将不同的功能组件连接起来形成一个链式结构每个组件都可以独立运作或与其他组件协作这些组件包括但不限于提示模板Prompt Templates、大型语言模型LLMs、代理Agents、短期/长期记忆Memory等。
LLMs Prompt
提供了目前市面上几乎所有 LLM 的通用接口同时还提供了 提示词 的管理和优化能力同时也提供了非常多的相关适用工具以方便开发人员利用 LangChain与 LLMs 进行交互。
Chains
LangChain 把 提示词、大语言模型、结果解析封装成 Chain并提供标准的接口以便允许不同的Chain形成交互序列为 AI原生应用提供了端到端的 Chain
Retrieval Augemented Generation
检索增强生成式 是一种解决预训练语料数据无法及时更新而带来的回答内容陈旧日的方式。LangChain提供了支持 检索增强生成式 的 Chain在使用时这些 Chain 会首先与外部数据源进行交互以获得对应数据然后再利用获得的数据与 LLMs 进行交互。典型的应用场如:基于特定数据源的问答机器人。
Agent
对于一个任务代理主要涉及让 LLMs 来对任务进行拆分、执行该行动、并观察执行结果代理 会重复执行这个过程直到该任务完成为止。LangChain 为 代理 提供了标准接口可供选择的代理以及一些端到端的代理的示例。
Memory
指的是 chain 或 agent 调用之间的状态持久化。LangChain 为 内存 提供了标准接口并提供了一系列的 内存 实现。
Evaluation
LangChain 还提供了非常多的评估能力以允许我们可以更方便的对 LLMs 进行评估。
LangChain的优势和劣势
优势
1、大语言模型调用能力支持多平台多模型调用为用户提供灵活选择。
LangChain的核心优势之一是其对多个大型语言模型LLMs平台的兼容性它允许开发人员无缝地集成和切换不同的模型如OpenAI、Cohere或Hugging Face等。这意味着开发者可以根据项目需求选择最合适的模型而不是被特定API所限制极大地增强了应用的灵活性和可扩展性。
2、轻量级SDK(python、javascript)将LLMs与传统编程语言集成在一起。
通过提供Python和JavaScript等编程语言的轻量级软件开发工具包SDKLangChain简化了将LLMs整合到传统应用程序中的过程。这种集成方式降低了开发门槛使得非AI专家也能相对容易地利用强大的语言模型功能构建复杂的应用程序逻辑。
3、多模态支持,提供多模态数据支持如图像、音频等。
LangChain不仅限于处理文本数据还能够支持多模态输入输出例如处理图像、音频和其他类型的数据。这一特性使得基于LangChain构建的应用可以理解并生成多媒体内容从而实现更加丰富、智能的交互体验。
劣势
1、学习曲线相对较高。
尽管LangChain旨在简化LLM的应用开发但由于其架构设计较为先进且具有高度模块化的特点对于初次接触该框架的开发者来说理解和掌握如何配置、串联各个组件以达到预期效果可能需要一定的时间投入和学习成本。
2、文档相对不完善官方文档不是很完善。
刚开始的时候可能是因为赶进度的原因他的文档质量非常低基本上得去看他的原代码才能明白是做什么的但是最新的版本发布以后文档的质量水平有很大的提升了。
3、缺乏大型工业化应用实践。
缺乏大型的工业化应用也就说没有哪特别大的厂商在用它但是有很多中小项目在用。
LangChain安装以及测试实例
pip安装LangChain
pip install --upgrade langchain -i https://pypi.org/simple
conda安装LangChain
conda install langchain -c conda-forge
测试示例
我使用的是阿里云的通义千问大模型使用openai、百度文心都可以这里只是为了学习测试
调用官方sdk样例
from http import HTTPStatus
import dashscope#api_key需要自己申请申请地址阿里云 https://bailian.console.aliyun.com/
dashscope.api_key
def sample_sync_call():prompt_text 用萝卜、土豆、茄子做饭给我个菜谱。resp dashscope.Generation.call(modelqwen-turbo,promptprompt_text)# The response status_code is HTTPStatus.OK indicate success,# otherwise indicate request is failed, you can get error code# and message from code and message.if resp.status_code HTTPStatus.OK:print(resp.output) # The output textprint(resp.usage) # The usage informationelse:print(resp.code) # The error code.print(resp.message) # The error message.sample_sync_call() 使用langchain库调用
#!pip install langchain langchainhub dashscope
from langchain_core.prompts import ChatPromptTemplate
from langchain.chains import LLMChain
from langchain_community.llms import Tongyi
from langchain import hub
import osprompt1 ChatPromptTemplate.from_template({input})
os.environ[DASHSCOPE_API_KEY]
llm Tongyi()chain_one LLMChain(llmllm,promptprompt1,verboseFalse
)
print(chain_one.invoke(用萝卜、土豆、茄子做饭给我个菜谱。))
LangChain的核心模块与实操
模型IO大语言模型的交互接口
在langchain中“模型IO大语言模型的交互接口”是指一套标准化的方法和结构用于与各种大型语言模型Large Language Models, LLMs进行交互。这些接口旨在提供一种通用的方式来封装不同LLM服务提供商如OpenAI、Cohere、Hugging Face等的具体API细节使开发者能够以一致的方式调用不同模型的功能而不必关心底层实现的差异。 prompts模板
概念
LangChain 提供了一套用于构建和操作提示prompts的模板系统旨在帮助用户更高效、灵活地与各种大语言模型LLMs交互。Prompts 模板旨在标准化、模块化以及自动化提示的设计过程以优化模型输出的质量和一致性。
PromptTemplate 这是最基础的提示模板类用于定义一个可复用的、结构化的文本模板其中可能包含占位符或变量。模板可以包含静态文本和动态部分动态部分通过指定的输入变量如 foo 和 bar进行填充。
StringPromptTemplate 特定类型的提示模板专用于处理字符串形式的模板。它可能提供了额外的方法或特性便于直接操作文本模板。
PipelinePromptTemplate 这种模板允许将多个独立的提示按照特定顺序组成一个“流水线”每个步骤可能使用不同的模型或处理逻辑使得复杂任务能够通过一系列有序的子任务来完成。 关于提示词
好的提示词能够使语言模型更加有效准确的回答 PromptTemplate字符模板
简单的字符替换
from langchain.prompts import PromptTemplateprompt PromptTemplate.from_template(你是一个起名大师帮我起1个具有{county}特色的男孩名字)
prompt.format(county法国)
ChatPromptTemplate模板
生成ai对话上下文背景也就是先做个铺垫可以使ai更加优化准确的回答
from langchain.prompts import ChatPromptTemplatechat_template ChatPromptTemplate.from_messages([(system,你是一个起名大师你的名字叫{name}),(human,你好{name},你感觉如何?),(ai,你好我状态非常好),(human,{user_input}),]
)
chat_template.format_messages(name陈大师,user_input你叫什么名字呢) StoryPromptTemplate自定义模板
from langchain.prompts import PromptTemplate, StringPromptTemplate
from pydantic import BaseModel
from typing import List
from langchain_core.prompts import ChatPromptTemplate
from langchain.chains import LLMChain
from langchain_community.llms import Tongyi
from langchain import hub
import os# 定义一个用于故事创作的自定义输入模型包括标题、角色、情节点等信息
class StoryInput(BaseModel):title: strcharacters: List[str]plot_points: List[str]# 定义自定义提示模板
class StoryPromptTemplate():# 基础提示模板字符串base_prompt: str 撰写一篇标题为《{title}》的短篇故事故事中包含以下角色{characters}。故事应包含以下情节点{plot_points}。请以一句引人入胜的开场句开始故事。def render(self, story_input: StoryInput) - str:使用提供的故事输入渲染自定义提示。formatted_characters , .join(story_input.characters)formatted_plot_points \n.join(f- {point} for point in story_input.plot_points)return self.base_prompt.format(titlestory_input.title,charactersformatted_characters,plot_pointsformatted_plot_points,)# 创建一个故事输入实例
story_input StoryInput(title神秘森林,characters[艾芙琳, 加伦, 智者猫头鹰],plot_points[艾芙琳发现一张通往隐藏林地的古老地图。,加伦警告森林周围存在一股黑暗诅咒。,智者猫头鹰揭示了解除诅咒的秘密。,],
)# 创建自定义提示模板实例
story_prompt StoryPromptTemplate()# 渲染并打印出最终的提示
final_prompt story_prompt.render(story_input)prompt1 ChatPromptTemplate.from_template({input})
os.environ[DASHSCOPE_API_KEY] sk-cf5d02e81ea44717a35e22c72e4c0dc1
llm Tongyi()chain_one LLMChain(llmllm,promptprompt1,verboseFalse
)
result chain_one.invoke(final_prompt)
text_content result[text]
print(text_content) 持续更新。。。