![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LLM入门教程笔记
文章平均质量分 79
《面向开发者的 LLM 入门教程》的笔记介绍了大规模预训练语言模型的应用。探讨了Prompt Engineering、ChatGPT API的应用、LangChain框架、整合私有数据的方法等。助您快速入门大模型应用开发。
向日葵花籽儿
AI工程师:
NLP+AIGC+LLM+后端+DB(向量/非向量)
深度学习/算法优化/基础提升
Python/C++/(Java/JS/HTML)
近期专注内容:RAG | Langchain
展开
-
#LLM入门|prompt#(完结)最全面向开发者的LLM入门教程
点击链接可跳转。原创 2024-02-29 11:10:30 · 932 阅读 · 0 评论 -
#LLM入门 | langchain | RAG # 4.6_问答
Langchain 在实现与外部数据对话的功能时需要经历下面的5个阶段,它们分别是:Document Loading->Splitting->Storage->Retrieval->Output,如下图所示:图 4.6.1 访问个人数据全流程完成存储和获取相关文档后,需将文档传递给语言模型以生成答案。流程包括提出问题、检索文档、传递文档和问题给模型、获取答案。默认将所有文档切片传入同一上下文窗口,但存在MapReduce、Refine和MapRerank等方法解决上下文窗口限制问题。原创 2024-05-22 17:02:23 · 416 阅读 · 0 评论 -
#LLM入门 | langchain | RAG # 4.7_聊天_Chat
"""该函数用于加载 PDF 文件,切分文档,生成文档的嵌入向量,创建向量数据库,定义检索器,并创建聊天机器人实例。参数:file (str): 要加载的 PDF 文件路径。chain_type (str): 链类型,用于指定聊天机器人的类型。k (int): 在检索过程中,返回最相似的 k 个结果。返回:qa (ConversationalRetrievalChain): 创建的聊天机器人实例。"""# 载入文档# 切分文档# 定义 Embeddings# 根据数据创建向量数据库。原创 2024-05-23 09:14:37 · 714 阅读 · 0 评论 -
#LLM入门 | langchain | RAG # 4.5_检索(Retrieval)
MMR 算法可以实现兼具相关性与多样性的检索结果,避免信息冗余。定义元数据字段可以进行针对性过滤,提升匹配准确率。SelfQueryRetriever 模块通过语言模型自动分析语句,提取查询字符串与过滤条件,无需手动设置,使检索更智能。ContextualCompressionRetriever 实现压缩检索,仅返回与问题相关的文档片段,可以大幅提升效率并节省计算资源。除向量检索外,还简要介绍了基于 SVM 和 TF-IDF 的检索方法。原创 2024-05-22 13:50:53 · 1833 阅读 · 0 评论 -
#LLM入门 | langchain | RAG # 4.4_向量数据库与词向量(Vectorstores_and_Embeddings)
回顾一下检索增强生成(RAG)的整体工作流程:图 4.4 检索增强生成整体流程前两节课我们讨论了 Document Loading(文档加载)和 Splitting(分割)。下面我们将使用前两节课的知识对文档进行加载分割。原创 2024-05-22 13:50:09 · 589 阅读 · 0 评论 -
#LLM入门 | langchain | RAG # 4.3_文档分割
上一章讨论了文档标准化加载,现在转向文档的细分,这虽简单却对后续工作有重大影响。原创 2024-05-07 16:55:53 · 765 阅读 · 0 评论 -
#LLM入门 | langchain | RAG # 4.2_文档加载
一旦文档被加载,它会被存储在名为pages的变量里。在第二部分,我们利用LangChain加载器从YouTube视频链接下载音频到本地,并用OpenAIWhisperPaser解析器将音频转换为文本。在page变量中,每一个元素都代表一个文档,它们的数据类型是langchain.schema.Document。首先,我们将构建一个 GenericLoader 实例来对 Youtube 视频的下载到本地并加载。接下来,我们将探讨如何加载网页链接,以GitHub上的Markdown文档为例进行学习。原创 2024-05-07 16:46:01 · 561 阅读 · 0 评论 -
#LLM入门 | langchain | RAG # 4.1 简介_使用 LangChain 访问个人数据
对于希望了解LangChain基础知识的读者,推荐学习《LangChain for LLM Application Development》部分。原创 2024-05-07 16:45:25 · 301 阅读 · 0 评论 -
【方便 | 重要】#LLM入门 | Agent | langchain | RAG # 3.7_代理Agent,使用langchain自带agent完成任务
在本节,我们将创建和使用自定义时间工具。LangChian tool 函数装饰器可以应用用于任何函数,将函数转化为LangChain 工具,使其成为代理可调用的工具。我们需要给函数加上非常详细的文档字符串, 使得代理知道在什么情况下、如何使用该函数/工具。比如下面的函数time,我们加上了详细的文档字符串。# 导入tool函数装饰器@tool"""返回今天的日期,用于任何需要知道今天日期的问题。输入应该总是一个空字符串,\这个函数将总是返回今天的日期,任何日期计算应该在这个函数之外进行。"""原创 2024-04-19 11:16:55 · 1195 阅读 · 0 评论 -
#LLM入门|AI测试# 3.6_创建测试集,人工/LLM评估
评估是确保语言模型(LLM)问答系统质量的重要步骤,它有助于检测模型在不同文档上的表现,发现不足之处,并通过比较不同模型选择最优方案。定期评估还能监测模型性能是否下降。评估目的包括。基本策略是使用LLM和链来评估其他LLM、链和应用。本章以文档问答应用为例,探讨LangChain中评估的处理和考量。首先,按照 langchain 链的方式构建一个 LLM 的文档问答应用上述代码的主要功能及作用在上一章节中都已说明,这里不再赘述。原创 2024-04-19 08:45:00 · 1114 阅读 · 0 评论 -
#LLM入门|RAG#3.5_基于文档的问答
大语言模型(LLM)构建的问答系统,通过整合用户文档,提供个性化和专业化回答。系统可检索内部文档或产品说明书,结合语言模型生成精准答案。这种方法让语言模型利用外部文档专业信息,显著提升回答的质量和适用性,使模型服务更具体化,超越通用知识。构建问答系统时,LangChain的嵌入模型和向量存储等组件关键,帮助系统理解文档信息。本章将学习这些组件,以深入理解问答系统。向量储存查询。原创 2024-04-18 19:19:19 · 1112 阅读 · 0 评论 -
#LLM入门|RAG#3.4_模型链
定义适用于不同场景的提示模板。# 中文#第一个提示适合回答物理问题physics_template = """你是一个非常聪明的物理专家。你擅长用一种简洁并且易于理解的方式去回答问题。当你不知道问题的答案时,你承认\你不知道.这是一个问题:{input}"""#第二个提示适合回答数学问题math_template = """你是一个非常优秀的数学家。你擅长回答数学问题。你之所以如此优秀, \是因为你能够将棘手的问题分解为组成部分,\回答组成部分,然后将它们组合在一起,回答更广泛的问题。原创 2024-04-18 19:13:08 · 1001 阅读 · 0 评论 -
#LLM入门|Prompt#3.3_存储_Memory
对话摘要缓存储存,使用 LLM 对到目前为止历史对话自动总结摘要,并将其保存下来。我们创建了一个长字符串,其中包含某人的日程安排。# 创建一个长字符串schedule = "在八点你和你的产品团队有一个会议。你需要做一个PPT。上午9点到12点你需要忙于LangChain。Langchain是一个有用的工具,因此你的项目进展的非常快。中午,在意大利餐厅与一位开车来的顾客共进午餐 \走了一个多小时的路程与你见面,只为了解最新的 AI。确保你带了笔记本电脑可以展示最新的 LLM 样例."原创 2024-03-14 15:17:22 · 880 阅读 · 4 评论 -
#LLM入门|Prompt#3.2_模型,提示和输出解释器_Models,Prompts_and_Parses
本章将简要介绍LLM开发的重要概念:模型、提示和解释器。如果您已经完整学习了前面两个部分的内容,对这些概念应该已经很熟悉了。然而,在LangChain的定义中,这些概念的定义和使用与之前有一些细微的差别。因此,我们仍然推荐您认真阅读本章,以进一步深入了解LLM开发。同时,如果您直接学习本部分的话,本章的内容将是您理解后续内容的重要基础。我们首先向您演示直接调用 OpenAI 的场景,以充分说明为什么我们需要使用 LangChain。原创 2024-03-14 14:56:41 · 732 阅读 · 0 评论 -
#LLM入门|Prompt#3.1 第三部分 使用 LangChain 开发应用程序_简介
通过对LLM或大型语言模型给出提示(prompt),现在可以比以往更快地开发AI应用程序,但是一个应用程序可能需要进行多轮提示以及解析输出。在此过程有很多重复代码需要编写,基于此需求,哈里森·蔡斯 (Harrison Chase) 创建了LangChain,使开发过程变得更加丝滑。LangChain开源社区快速发展,贡献者已达数百人,正以惊人的速度更新代码和功能。原创 2024-03-11 09:00:00 · 420 阅读 · 0 评论 -
#LLM入门|Prompt#2.10_评估、自动化测试效果(下)——当不存在一个简单的正确答案时 Evaluation Part2
上一章我们探索了如何评估 LLM 模型在的情况下的性能,并且我们学会了编写一个函数来验证 LLM 是否正确地进行了分类列出产品。在使用LLM生成文本的场景下,评估其回答准确率可以是一个挑战。由于LLM是基于大规模的训练数据进行训练的,因此无法像传统的分类问题那样使用准确率来评估其性能。原创 2024-03-09 11:22:07 · 929 阅读 · 0 评论 -
#LLM入门|Prompt#2.9_评估、自动化测试效果(上)——存在一个简单的正确答案时(Evaluation-part1)
在构建基于LLM的应用程序后,我们需要评估其运行状况并持续优化回答质量。评估LLM输出的最佳实践包括逐步建立测试样例集合,调整Prompt以在小样本上起效,并添加难以处理的例子进行测试。与传统的监督学习应用程序不同,基于LLM的应用程序不需要收集大量的训练样本,因为可以在几分钟内定义Prompt并在几小时内得到结果。因此,我们可以通过在一到三个样本的小样本中调整Prompt来逐步改进系统性能。如果遇到无法解决的棘手例子,我们可以将这些例子添加到测试集中,并开发衡量性能的指标,如平均准确度。原创 2024-03-09 10:26:22 · 1572 阅读 · 0 评论 -
#LLM入门|Prompt#2.8_搭建一个带评估的端到端问答系统
在这一章节中,我们将会构建一个集成评估环节的完整问答系统。这个系统将会融合我们在前几节课中所学到的知识,并且加入了评估步骤。如果最终答案没有被标记为有害,那么我们将毫无保留地将其呈现给用户。原创 2024-03-09 09:34:15 · 1155 阅读 · 0 评论 -
#Prompt##提示词工程##AIGC##LLM# 学写Prompt 提示词 :使用大型预训练语言模型的关键考量
Baseline: 标准使用,无特殊策略。: 提供推理链的示例来帮助模型分步骤解决问题。Zero-CoT: 不提供示例,要求模型自发推理。**Auto-CoT:**内部进行推理但不显示全部过程的系统。Auto-CoT通常是通过训练过程中使用特定的数据集和训练策略来实现的,让模型学会在给出答案前先展现出解题的逻辑链条。: 添加说明以指导模型回答。+rawinst: 用户直接提供指导。“请按照五段式论文的格式回答以下问题…”+sysinst: 系统提供角色和任务说明。原创 2024-01-09 15:40:16 · 1162 阅读 · 0 评论 -
#LLM入门|Prompt#1.1 第一部分_面向开发者的LLM入门教程_简介
基于《Prompt Engineering for Developer》课程,合作吴恩达老师与 OpenAI 技术团队成员 Isa Fulford 老师。Isa Fulford 老师为知名ChatGPT插件开发者,曾在LLM技术应用和Prompt设计方面做出重要贡献。基础LLM通过大量文本数据训练,预测下一个单词能力。例子:以输入提示为“从前,有一只独角兽”,LLM继续预测“她与独角兽朋友共同生活在一片神奇森林中”。指令微调LLM通过专门训练,更好理解并遵循指令。原创 2024-02-22 16:31:49 · 870 阅读 · 0 评论 -
#LLM入门|Prompt#1.2_提示原则_Guidelines
在接下来这个 Prompt 中,我们要求模型先自行解决这个问题,再根据自己的解法与学生的解法进行对比,从而判断学生的解法是否正确。在这个例子中,学生的答案是错误的,但如果我们没有先让模型自己计算,那么可能会被误导以为学生是正确的。相反,我们可以在 Prompt 中先要求语言模型自己尝试解决这个问题,思考出自己的解法,然后再与提供的解答进行对比,判断正确性。产品的信息,事实上,这个公司是真实存在的,但产品是编造的,而模型一本正经地提供了它编造的知识,而且迷惑性很强。GT Watch 运动手表。原创 2024-02-22 16:32:35 · 1143 阅读 · 0 评论 -
#LLM入门|Prompt#1.3_迭代优化_Iterative
本章重点强调了在开发大语言模型应用时,采用迭代方式逐步优化Prompt的重要性。Prompt工程师的核心在于掌握有效的Prompt开发流程,而不是一开始就追求完美的Prompt。原创 2024-02-23 10:00:00 · 1809 阅读 · 0 评论 -
#LLM入门|Prompt#1.4_文本概括_Summarizing
在实际的工作流中,我们往往要处理大量的评论文本,下面的示例将多条用户评价集合在一个列表中,并利用 for 循环和文本概括(Summarize)提示词,将评价概括至小于 20 个词以下,并按顺序打印。当然,在实际生产中,对于不同规模的评论文本,除了使用 for 循环以外,还可能需要考虑整合评论、分布式等方法提升运算效率。请对三个反引号之间的评论文本进行概括,最多30个词汇,并且侧重在产品价格和质量上。请对三个反引号之间的评论文本进行概括,最多30个字,并且侧重在快递服务上。原创 2024-02-23 10:00:00 · 423 阅读 · 0 评论 -
#LLM入门|Prompt#1.5_推断_Inferring
LLM的出现为数据分析师带来了巨大便利,大大提高了工作效率。通过编写简单的Prompt,就能完成多个任务,加速了工作进程,使得处理文本数据更加高效。原创 2024-02-23 10:00:00 · 739 阅读 · 0 评论 -
#LLM入门|Prompt#1.6_文本转换_Transforming
【总结】 这只熊猫玩具非常适合作为生日礼物,柔软可爱,深受孩子喜欢。利用大语言模型强大的组合转换能力,我们可以避免多次调用模型来进行不同转换,极大地简化了工作流程。通过这个例子,我们可以看到大语言模型可以流畅地处理多个转换要求,实现中文翻译、拼写纠正、语气升级和格式转换等功能。下面是一个示例,展示了如何使用一个Prompt,同时对一段文本进行翻译、拼写纠正、语气调整和格式转换等操作。语言模型具有强大的组合转换能力,可以通过一个Prompt同时实现多种转换,大幅简化工作流程。原创 2024-02-22 17:12:16 · 889 阅读 · 0 评论 -
#LLM入门|Prompt#1.7_文本拓展_Expanding
输入简短文本,生成更加丰富的长文。。原创 2024-02-22 17:12:02 · 619 阅读 · 0 评论 -
#LLM入门|Prompt#1.8_聊天机器人_Chatbot
此处我们另外要求模型创建一个 JSON 摘要,方便我们发送给订单系统。因此我们需要在上下文的基础上追加另一个系统消息,作为另一条指示 (instruction)。披萨,包括尺寸配料列表饮料列表辅菜列表,包括尺寸,总价格。此处也可以定义为用户消息,不一定是系统消息。请注意,这里我们使用了一个较低的温度,因为对于这些类型的任务,我们希望输出相对可预测。'''创建上一个食品订单的 json 摘要。原创 2024-02-22 17:09:57 · 1582 阅读 · 0 评论 -
#LLM入门|Prompt#1.9_总结_Summary
希望您在学习过程中感到满足,感谢您的参与!期待您的惊艳作品!原创 2024-02-22 17:11:36 · 568 阅读 · 0 评论 -
#LLM入门|Prompt#2.1_第二部分:搭建基于 ChatGPT 的问答系统_简介_Introduction
本部分基于吴恩达老师与OpenAI合作开发的课程《Building Systems with the ChatGPT API》创作,旨在指导开发者基于ChatGPT的API进行智能问答系统的构建。原创 2024-02-28 14:43:17 · 733 阅读 · 0 评论 -
#LLM入门|Prompt#2.2_ AI 应用开发的范式_Language_Models,the_Chat_Format_and_Tokens
Prompt 技术改变了 AI 应用开发的范式,使开发者能更快速、高效地构建和部署应用。然而,应认识到其局限性,以更好地推动 AI 应用的发展。在下一章中,我们将展示如何利用 Prompt 技术评估客户服务助手的输入,作为构建在线零售商客户服务助手示例的一部分。原创 2024-02-28 14:44:29 · 1505 阅读 · 0 评论 -
#LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
在处理不同情况下的多个独立指令集的任务时,首先对查询类型进行分类,并以此为基础确定要使用哪些指令,具有诸多优势。在这个例子中,我们使用系统消息(system_message)作为整个系统的全局指导,并选择使用 “#” 作为分隔符。分隔符是用来区分指令或输出中不同部分的工具,它可以帮助模型更好地识别各个部分,从而提高系统在执行特定任务时的准确性和效率。在这种情况下,我们可能会添加关于平板电脑的额外信息,而在其他情况下,我们可能希望提供关闭账户的链接或类似的内容。原创 2024-02-28 14:46:45 · 1196 阅读 · 0 评论 -
#LLM入门|Prompt#2.4_检查输入_审核合法性|Prompt注入|Prompt injection:指令注入攻击_Moerration
如何使用 OpenAI 的 Moderation API 来进行内容审查,以及如何使用不同的提示来检测提示注入(Prompt injections)。原创 2024-02-29 09:00:00 · 1130 阅读 · 0 评论 -
#LLM入门|Prompt#2.5_思维链推理_Chain_of_Thought_Reasoning
(Chain of Thought Reasoning)的策略,在查询中明确要求语言模型先提供一系列相关推理步骤,进行深度思考,然后再给出最终答案,这更接近人类解题的思维过程。引导语言模型逐步推理而非直接要求输出结果,可以减少其匆忙错误,生成更准确可靠的响应。思维链推理使语言模型更好地模拟人类逻辑思考,是提升其回答质量的重要策略之一。原创 2024-02-29 09:00:00 · 925 阅读 · 0 评论 -
#LLM入门|Prompt#2.7_检查结果_Check_Outputs
引领你了解。原创 2024-03-04 14:52:31 · 429 阅读 · 0 评论 -
#LLM入门|Prompt#2.6_Prompt_链_Chaining_Prompts
过多无关信息会使模型处理上下文时更加困惑。尤其是低级模型,处理大量数据会表现衰减。模型本身对上下文长度有限制,无法一次加载过多信息。包含过多信息容易导致模型过拟合,处理新查询时效果较差。动态加载信息可以降低计算成本。允许模型主动决定何时需要更多信息,可以增强其推理能力。我们可以使用更智能的检索机制,而不仅是精确匹配,例如文本 Embedding 实现语义搜索。因此,合理设计提示链的信息提供策略,既考虑模型的能力限制,也兼顾提升其主动学习能力,是提示工程中需要着重考虑的点。原创 2024-03-04 14:54:58 · 1196 阅读 · 0 评论