面向开发者的 LLM 入门教程-笔记和代码

从零开始构建大模型(LLM)应用 大模型(LLM)的应用开发是一个不断进化的过程,它涉及到扩展应用场景、解决新问题、添加新功能,并持续改进LLM产品。在继续进行人工智能开发的过程中,保持灵活,勇于尝试新的方式,以最终用户的需求为中心。这样,我们可以不断推动技术前进,让产品更贴合用户需求,更好地服务于实际应用。 阅读详情

本文是 DLAI 课程 ChatGPT Prompt Engineering for Developers 的笔记。这门课面向入门 LLM 的开发者,深入浅出地介绍了如何构造 Prompt 并基于 OpenAI 提供的 API 实现包括总结、推断、转换等功能,是入门 LLM 开发的经典教程。

Prompt(提示),最初是 NLP 研究者为下游任务而设计的一种任务输入形式或模板,在 ChatGPT 的影响下,Prompt 成为与 LLM 交互输入的代称。一般我们把给大模型的输入称为 Prompt,将大模型返回的输出称为 Completion。一个合理的 Prompt 设计极大地决定了 LLM 能力的上限与下限。

Prompt Engineering,是针对特定任务构造能充分发挥大模型能力的 Prompt 的技巧。

对于开发人员,LLM 更强大的功能是能通过 API 接口调用,从而快速构建软件应用程序。课程中有很多代码的实操,推荐大家使用 Google colab 来实现,免去本地环境的配置。代码运行的结果,可以查看 00 的 colab notebook,包括 Prompt 的运行结果:

图片

https://colab.research.google.com/drive/1m1QqQd2UUG_4VM4l1rEftKoWoCnxb7U0?usp=sharing

Lesson 1.提示词原则

提示词设计的两个关键原则:编写清晰、具体的指令,以及给模型充足思考时间。

原则一:编写清晰、具体的指令

Prompt 需要清晰明确地表达需求,提供充足上下文,使语言模型准确理解我们的意图,就像向一个外星人详细解释人类世界一样。过于简略的 Prompt 往往使模型难以把握所要完成的具体任务。

  1. 使用分隔符清晰地表示输入的不同部分

    可以选择用 ````,“”",< >, ,: 等做分隔符,只要能明确起到隔断作用即可。

在这里插入图片描述

  1. 结构化输出

    按照某种格式组织的内容,例如JSON、HTML等。这种输出非常适合在代码中进一步解析和处理。
    在这里插入图片描述

  2. 要求模型检查是否满足条件

    如果任务包含不一定能满足的条件,可以告诉模型先检查这些条件,如果不满足,就指出并停止执行后续的完整流程。
    在这里插入图片描述

  3. 提供少量示例

    在要求模型执行实际任务之前,给出一两个已完成的样例,让模型了解期望的输出样式。

原则二:给模型充足思考时间

语言模型与人类一样,需要时间来思考并解决复杂问题。如果匆忙给出结论,结果很可能不准确。因此 Prompt 应加入逐步推理的要求,给模型留出充分思考时间,可以要求其先列出对问题的各种看法,说明推理依据,然后再得出最终结论。

  1. 指定完成任务所需的步骤

    text = f"""
    李琪,爱荷华州立大学计算机科学系助理教授,她于2017年取得纽约州立大学布法罗分校计算机科学与工程系博士学位;于2012年取得伊利诺伊大学香槟分校统计学硕士学位;于2010年取得西安电子科技大学信息与计算科学学士学位。她的研究兴趣为数据管理、数据挖掘和机器学习。
    彭楠赟,现任加州大学洛杉矶分校计算机科学系助理教授。她于2012年在北京大学获得学士和硕士学位,于2017年获约翰·霍普金斯大学计算机科学博士学位。她的研究方向为低资源信息提取、语言生成和跨语言迁移。
    Qianqian Wang,康纳尔大学计算机科学专业博士四年级,此前在浙江大学获得学士学位,研究方向是3D 计算机视觉、计算机图形学和机器学习的交叉领域。
    陈师哲, INRIA Paris 的一名博士后研究员。她分别于2020年和2015年在中国人民大学获得博士和学士学位,2018年访问了卡内基梅隆大学,2019 年访问了阿德莱德大学,2019年在 MSRA 工作。她在2017年获得百度奖学金,2020年获得北京市优秀毕业生奖。她的研究兴趣是具身智能、视觉与语言、多模态深度学习。
    李爽,目前是麻省理工学院电气工程与计算机科学专业的一名五年级博士生,她的研究兴趣是人工智能,包括计算机视觉、自然语言处理、决策和机器学习。
    Xin Lu,现任Adobe 的高级工程经理,于2015年获得美国宾夕法尼亚州立大学的博士学位。她的研究涵盖从端到端 AI/ML 研发到软件开发、分析、开发运营、新计划和现有业务线的产品开发和管理。 此外,她还在顶级的计算机视觉和机器学习领域发表了 30 多篇论文,并拥有超过 35 项美国专利。
    刘伊凡,现任苏黎世联邦理工大学讲师,阿德莱德大学客座助理教授。于2018年获得北航自动化学院硕士学位,2021年获得阿德莱德大学计算机科学学院博士学位。研究领域主要包含深度学习、开放世界感知。
    """
    
    prompt_2 = f"""
    1-用一句话概括下面用<>括起来的文本。2-将摘要翻译成英语。3-在英语摘要中列出每个名称。4-输出一个 JSON 对象,其中包含以下键:English_summary,num_names。请使用以下格式:文本:<要总结的文本>摘要:<摘要>翻译:<摘要的翻译>名称:<英语摘要中的名称列表>输出 JSON:<带有 English_summary 和 num_names 的 JSON>Text: <{text}>
    """
    response = get_completion(prompt_2)
    print("\nprompt 2:")
    print(response)
    
  2. 让模型在下结论之前给出自己的解法

Lesson 2. 迭代优化

在开发大语言模型应用时,很难通过第一次尝试就得到完美适用的 Prompt。关键是要有一个良好的迭代优化过程,不断改进 Prompt。

图片
在这里插入图片描述
在这里插入图片描述

轮次Prompt目的
初始您的任务是帮助营销团队基于技术说明书创建一个产品的营销描述。根据标记的技术说明书中提供的信息,编写一个产品描述。技术规格: {fact_sheet_chair}
迭代 1您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。根据标记的技术说明书中提供的信息,编写一个产品描述。使用最多50个词。技术规格: {fact_sheet_chair}添加长度限制,生成更简洁的文案
迭代 2您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。根据标记的技术说明书中提供的信息,编写一个产品描述。该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。使用最多50个单词。技术规格: {fact_sheet_chair}说明受众,应具有什么性质以及侧重点
迭代 3您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。根据```标记的技术说明书中提供的信息,编写一个产品描述。该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。在描述末尾,包括技术规格中每个7个字符的产品ID。使用最多50个单词。技术规格: {fact_sheet_chair}要求在描述的结尾,给出产品 ID
迭代 4您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。根据```标记的技术说明书中提供的信息,编写一个产品描述。该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。在描述末尾,包括技术规格中每个7个字符的产品ID。在描述之后,包括一个表格,提供产品的尺寸。表格应该有两列。第一列包括尺寸的名称。第二列只包括英寸的测量值。给表格命名为“产品尺寸”。将所有内容格式化为可用于网站的HTML格式。将描述放在元素中。技术规格: {fact_sheet_chair}提取产品尺寸信息并组织成表格

在这里插入图片描述

Lesson 3. 文本概括

LLM 文本摘要功能的优势可以为你节省时间、提高效率,以及精准获取信息。

单一文本概括

任务:商品评论总结
在这里插入图片描述

限制输出文本长度
在这里插入图片描述

注:模型在计算和判断文本长度时依赖于分词器,统计字符时并不精确。

设置侧重点
在这里插入图片描述

关键信息提取
在这里插入图片描述

多条文本概括

将多条用户评价集合在一个列表中,并利用 for 循环和文本概括提示词,将评价概括至小于 20 个词以下,并按顺序打印。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Lesson 4.推断

一、情感推断

商品评论

lamp_review = """
我需要一盏漂亮的卧室灯,这款灯具有额外的储物功能,价格也不算太高。\
我很快就收到了它。在运输过程中,我们的灯绳断了,但是公司很乐意寄送了一个新的。\
几天后就收到了。这款灯很容易组装。我发现少了一个零件,于是联系了他们的客服,他们很快就给我寄来了缺失的零件!\
在我看来,Lumina 是一家非常关心顾客和产品的优秀公司!
"""

判断商品评论的情感 prompt
在这里插入图片描述

识别情感类型 prompt
在这里插入图片描述

识别愤怒 prompt
在这里插入图片描述

二、信息提取

商品信息提取
在这里插入图片描述

综合情感推断和信息提取

prompt = f"""
从评论中识别以下内容:
- 情绪(正面/负面)
- 评论者是否感到生气?(是/否)
- 评论者购买的物品
- 制造该物品的公司

评论用三个反引号分隔。将回答转换为 JSON 对象,以 “情感倾向”、“是否生气”、“物品类型” 和 “品牌” 作为key。
如果信息不存在,请使用 “未知” 作为值。
回答应尽可能简短。
将 “是否生气” 值转换为布尔值。

评论文本: ```{lamp_review}```
"""
response = get_completion(prompt)
print(response)

三、主题推断

判断一段文本的主旨,它涉及了哪些主题。

story = """
在政府最近进行的一项调查中,要求公共部门的员工对他们所在部门的满意度进行评分。
调查结果显示,NASA 是最受欢迎的部门,满意度为 95%。

一位 NASA 员工 John Smith 对这一发现发表了评论,他表示:
“我对 NASA 排名第一并不感到惊讶。这是一个与了不起的人们和令人难以置信的机会共事的好地方。我为成为这样一个创新组织的一员感到自豪。”

NASA 的管理团队也对这一结果表示欢迎,主管 Tom Johnson 表示:
“我们很高兴听到我们的员工对 NASA 的工作感到满意。
我们拥有一支才华横溢、忠诚敬业的团队,他们为实现我们的目标不懈努力,看到他们的辛勤工作得到回报是太棒了。”

调查还显示,社会保障管理局的满意度最低,只有 45%的员工表示他们对工作满意。
政府承诺解决调查中员工提出的问题,并努力提高所有部门的工作满意度。
"""


推断讨论主题 prompt
在这里插入图片描述

为特定主题制作新闻提醒

假设有一个新闻网站,我们感兴趣的主题:美国航空航天局、当地政府、工程、员工满意度、联邦政府等。判断一篇文章,是否包含这些主题。
在这里插入图片描述

可以在此基础上制定新闻提醒:
在这里插入图片描述

Lesson 5.文本转换

一、文本翻译

相比于传统统计机器翻译系统,大语言模型翻译更加流畅自然,还原度更高。通过在大规模高质量平行语料上进行 Fine-Tune,大语言模型可以深入学习不同语言间的词汇、语法、语义等层面的对应关系,模拟双语者的转换思维,进行意义传递的精准转换,而非简单的逐词替换。
在这里插入图片描述

二、语气与写作风格调整

在这里插入图片描述

三、文件格式转换

大模型可以轻松实现 JSON 到 HTML、XML、Markdown 等格式的相互转化,掌握这一转换技巧可更高效地处理结构化数据。

# 假设有一个 JSON 数据,包含餐厅员工的姓名和邮箱。现在将这个 JSON 转换为 HTML 表格格式,以便在网页中展示
data_json = { "resturant employees" :[
    {"name":"Shyam", "email":"shyamjaiswal@gmail.com"},    
    {"name":"Bob", "email":"bob32@gmail.com"},    
    {"name":"Jai", "email":"jai87@gmail.com"}
]}
prompt = f"""
将以下Python字典从JSON转换为HTML表格,保留表格标题和列名:{data_json}
"""
response = get_completion(prompt)
print(response)

四、拼写及语法纠正

假设一篇文章的部分句子存在错误。可以遍历每个句子,要求模型进行检查,如果句子正确就输出“未发现错误”,如果有错误就输出修改后的正确版本。

text = [
   "The girl with the black and white puppies have a ball.",  # The girl has a ball.  
   "Yolanda has her notebook.", # ok  
   "Its going to be a long day. Does the car need it’s oil changed?",  # Homonyms  
   "Their goes my freedom. There going to bring they’re suitcases.",  # Homonyms  "Your going to need you’re notebook.",  # Homonyms  
   "That medicine effects my ability to sleep. Have you heard of the butterfly affect?", # Homonyms  
   "This phrase is to cherck chatGPT for spelling abilitty"  # spelling
]
for i in range(len(text)):
    time.sleep(20)    
    prompt = f"""请校对并更正以下文本,注意纠正文本保持原始语种,无需输出原始文本。    
    如果您没有发现任何错误,请说“未发现错误”。    
        
    例如:    
    输入:I are happy.    
    输出:I am happy.    
    ```{text[i]}```"""    
    response = get_completion(prompt)    
    print(i, response)

五、综合样例

同时对一段文本进行翻译、拼写纠正、语气调整和格式转换等操作。
在这里插入图片描述

Lesson 6.文本扩展

文本扩展可以输入简短文本,生成更加丰富的长文。

一、定制客户邮件

将根据客户评价和情感倾向生成回复邮件。
在这里插入图片描述
在这里插入图片描述

二、温度系数

大语言模型中的 “温度”(temperature) 参数可以控制生成文本的随机性和多样性。temperature 的值越大,语言模型输出的多样性越大;temperature 的值越小,输出越倾向高概率的文本。

举个例子,在某一上下文中,语言模型可能认为“比萨”是接下来最可能的词,其次是“寿司”和“塔可”。若 temperature 为0,则每次都会生成“比萨”;而当 temperature 越接近 1 时,生成结果是“寿司”或“塔可”的可能性越大,使文本更加多样。

图片

如果需要可预测、可靠的输出,则将 temperature 设置为0;如果需要更具创意的文本,可适当提高 temperature。
在这里插入图片描述

Lesson 7.聊天机器人

一、给定身份

在 ChatGPT 网页界面中,消息分为用户消息和助手消息。但在构建聊天机器人时,在发送了系统消息之后,您的角色可以仅作为用户 (user) ;也可以在用户和助手 (assistant) 之间交替来提供对话上下文。
在这里插入图片描述
在这里插入图片描述

二、构建上下文

每次与语言模型的交互都互相独立,这意味着要提供所有相关的消息,以便模型在当前对话中进行引用。如果想让模型引用或 “记住” 对话的早期部分,则必须在输入中提供对话历史,也就是上下文 (context) 。
在这里插入图片描述

三、订餐机器人

机器人会自动收集用户信息,并接收来自比萨饼店的订单。

collect_messages() 函数收集用户消息,从用户界面中收集 Prompt ,然后将其附加到一个名为上下文( context )的列表中,并在每次调用模型时使用该上下文。模型的回答也会添加到上下文中,上下文逐渐变长。这样模型就知道下一步要做什么。

def collect_messages(_):
    prompt = inp.value_input    
    inp.value = ''    
    context.append({'role':'user', 'content':f"{prompt}"})    
    response = get_completion_from_messages(context)    
    context.append({'role':'assistant', 'content':f"{response}"})    
    panels.append(     
        pn.Row('User:', pn.pane.Markdown(prompt, width=600)))    
    panels.append(    
        pn.Row('Assistant:', pn.pane.Markdown(response, width=600, style={'background-color': '#F6F6F6'})))    
    return pn.Column(*panels)


现在,我们将设置并运行这个 UI 来显示订单机器人。初始的上下文包含了包含菜单的系统消息,在每次调用时都会使用。此后随着对话进行,上下文也会不断增长。需要用 pip 安装 panelCopy 库(用于可视化界面)。
在这里插入图片描述
在这里插入图片描述

运行如上代码可以得到一个点餐机器人,下图展示了一个点餐的完整流程:

图片

创建JSON摘要

接下来要求模型创建一个 JSON 摘要,发送给订单系统。(此处也可以定义为用户消息,不一定是系统消息)

请注意,这里使用了一个较低的温度,因为对于这些类型的任务,我们希望输出相对可预测。

messages =  context.copy()
messages.append(
{'role':'system', 'content':
'''创建上一个食品订单的 json 摘要。\
逐项列出每件商品的价格,字段应该是 1) 披萨,包括大小 2) 配料列表 3) 饮料列表,包括大小 4) 配菜列表包括大小 5) 总价
你应该给我返回一个可解析的Json对象,包括上述字段'''},
)

response = get_completion_from_messages(messages, temperature=0)
print(response)

在这里插入图片描述
在这里插入图片描述

总结

Prompt 的两个核心原则:

  • 编写清晰具体的指令;
  • 给模型一些思考时间。

我们还学习了迭代式 Prompt 开发的方法,逐步找到适合的 Prompt;另外,课程还讨论了大型语言模型的许多功能,包括摘要、推断、转换和扩展。

​

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

面向开发者的LLM入门教程介绍 大语言模型(LLM)正在逐步改变人们的生活,对于开发者而言,如何基于LLM提供的API快速、便捷地开发一些具备更强能力、集成LLM的应用,来实现更新颖、更实用的功能,是一项急需学习的重要技能。吴恩达老师与OpenAI合作推出的大模型系列教程,从大模型时代开发者的基础技能出发,介绍了如何基于大模型API、LangChain架构快速开发结合大模型强大能力的应用。但这些教程目前仅支持英文版且国内访问受限,因此datawhalechina团队打造了中文版的面向开发者的大模型手册 - LLM Cookbook。 阅读详情

相关推荐

面向开发者的 LLM 入门课程

一个中文版的大模型入门教程,围绕吴恩达老师的大模型系列课程展开,主要包括:· 书写 Prompt 的原则;· 文本总结(如总结用户评论);· 文本推断(如情感分类、主题提取);· 文本转换(如翻译、自动纠错);· 扩展(如书写邮件);· 使用大语言模型的基本规范;· 通过分类与监督评估输入;· 通过思维链推理及链式提示处理输入;· 检查并评估系统输出;· 模型、提示和解析器;· 应用程序所需要用到的存储;· 搭建模型链;· 基于文档的问答系统;· 评估与代理;· 上下文学习;

AI天才研究院 1万+

面向开发者的LLM入门教程系列之提示词工程(1)

是入门 LLM 开发的第一步。对于想要入门 LLM 的开发者,你需要充分掌握本部分的 Prompt Engineering 技巧,并能基于上述技巧实现个性化定制功能。本部分的主要内容包括:书写 Prompt 的原则与技巧;文本总结(如总结用户评论);文本推断(如情感分类、主题提取);文本转换(如翻译、自动纠错);扩展(如书写邮件)等。第一章 简介欢迎来到。

python1234567_的博客 1449

面向开发者的LLM入门教程

面向开发者的LLM入门教程

面向开发者的LLM入门教程(学习笔记01)

大语言模型(LLM) 的更强大功能是能通过 API 接口调用,从而快速构建软件应用程序。

hallo128的博客 942

INS/伪距组合导航(1)

星间单差GNSS/INS伪距紧组合

u014430081的博客 874

深度强化学习系列(13): 策略梯度(Policy Gradient)

对于DQN来说使用一个网络直接逼近了值函数,最后取得了非常不错的效果, 但是对于一些连续性控制或者动作空间特别大的环境来说,很难全部计算所有的值函数来得到最好的策略,那么直接计算策略的方法就别提出来了。 回顾一下前面几篇,所谓的策略,其实就是状态到动作的映射数学表达为 π:s→aπ:s→a\pi : s \to a, 我们用ττ\tau 表示状态s到最后一个状态的一个序列,表示为: τ:st...

深度强化学习(DeepRL)探索博客 4642

《LLM入门教程》大模型教程笔记12:一、面向开发者的提示工程——8.聊天机器人(订餐聊天机器人代码)

LLM入门教程》订餐聊天机器人。(代码不是很优化,仅供演示)

Dontla的博客 1390

视觉开发板—K210自学笔记(三)--点亮LED

K210点亮LED灯

adamsecond 3412

面向开发者的LLM入门教程笔记——1

1.给大模型的输入叫prompt(提示)。大模型返回的输出叫completion(完成)2.根据特定任务能够充分发挥大模型能力的技巧,必须学会prompt engineering(提示词工程)。3.怎样构造prompt并利用大语言模型的api实现常用的功能?4.目标:学会书写prompt的原则和技巧,文本总结(如总结用户评论),文本推断(如情感分类,主题提取),文本转换(如翻译,自动纠错),扩展(如书写邮件)。。。面向开发者的提示工程。

m0_62993594的博客 1051

企业AI Agent审计与合规:从日志留存到网络联动的完整落地指南

审计日志是企业安全与合规体系的基石,尤其在AI Agent大规模接入业务后,如何完整记录其行为链成为新的挑战。从日志留存180天到PCI DSS合规要求,审计体系需要覆盖会话、推理、工具调用、数据访问等关键环节,并结合不可篡改的存储设计,确保证据链可信。同时,借鉴上网行为管理设备对应用行为控制审计的思路,以及Kismet被动监测网络流量的方法论,将网络侧审计与应用侧日志交叉验证,能有效发现越权和异常行为。本文从日志采集、全链路追踪、基线预警到多租户隔离,系统梳理了AI Agent审计与合规落地的关键路径,帮

weixin_32234493的博客 266

从零构建:用Arduino和MCP2515模块搭建你的第一个CAN Bus网络

本文详细介绍了如何使用Arduino和MCP2515模块从零搭建CAN Bus网络,实现温湿度数据的传输与显示。涵盖硬件连接、软件配置、发送端与接收端代码实现,以及系统调试和进阶应用,帮助初学者快速掌握CAN总线通信技术。

d6e7f8的博客 833

Github 50k star!吴恩达+OpenAi编写<面向开发者的LLM入门教程> PDF!_面向开发者的llm入门课程pdf

今天给大家推荐一本由吴恩达和OpenAI团队共同编写的关于大型语言模型(LLM)的权威教程<,在Github上已经高达50k star了,这含金量不用多说,在这里给大家强烈推荐一波,不多bb直接开始介绍!这本教程旨在为开发者提供全面而系统的LLM知识和技能,结合了吴恩达在机器学习和人工智能领域的深厚造诣以及OpenAI在LLM技术方面的领先经验。

Z4400840的博客 1388

Allegro规则管理器实战:5步搞定Xnet等长组设置(含Relative Propagation Delay配置)

本文详细介绍了在Cadence Allegro规则管理器中,通过5个实战步骤高效设置Xnet等长组的方法。核心内容包括创建Xnet属性、定义引脚对、建立匹配组,并重点讲解了Relative Propagation Delay规则的配置与应用,帮助PCB设计师确保高速信号时序对齐,提升系统稳定性与性能。

weixin_29193259的博客 518

面向开发者的大模型手册:LLM Cookbook 详解

随着人工智能技术的飞速发展,大语言模型(LLM)已经成为当今科技领域的热门话题。从自然语言处理到生成式 AI,LLM 的应用范围广泛且深远。然而,对于许多开发者来说,如何入门并有效利用 LLM 进行开发仍然是一个挑战。幸运的是,Datawhale 团队推出了一本面向开发者的大模型手册——LLM Cookbook,它基于吴恩达老师的大模型系列课程内容,为国内开发者提供了一个全方位的 LLM 入门实践指南。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 2136

word2vector入门教程

摘要: 网上已经有许多对w2v的介绍了,这里只是做一个简单的概括。下面这篇文章我认为是关于W2V写的比较好的文章,读者有兴趣可以先参考一下: w2v参考文章1 另外一篇是关于Skip-Gram和CBow的介绍。 Skip-Gram&CBOW 逻辑比较清晰的综述文章: 综述文章 数学原理很清晰很短的一篇文章(也有关于负采样的简单说明) 参考文章 1.什么

SCUT_Sam 1万+

Open3D (C++) 泊松重建【2025最新版】

使用C++版本的Open3D实现点云的泊松重建

点云侠的博客 3077

【阅读笔记】面向开发者的 LLM 入门课程

对话摘要缓存储存,使用 LLM 对到目前为止历史对话自动总结摘要,并将其保存下来。LangChian tool 函数装饰器可以应用用于任何函数,将函数转化为LangChain 工具,使其成为代理可调用的工具。我们需要给函数加上非常详细的文档字符串, 使得代理知道在什么情况下、如何使用该函数/工具。reasoning = False # 设置 content 不输出 think 块# 嵌入模型(新增)

柳安忆的博客 1134

计算机控制技术及应用

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

Github 50k star!吴恩达+ OpenAi 编写<面向开发者LLM入门教程>(附PDF)

今天给大家推荐一本由吴恩达和OpenAI团队共同编写的关于大型语言模型(LLM)的权威教程!在Github上已经高达50k star了,这含金量不用多说,在这里给大家强烈推荐一波,不多bb直接开始介绍!

huang9604的博客 2221

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

0基础?没问题!吴恩达教授的《开发者的LLM入门完全指南》来了!

其中,《Prompt Engineering for Developers》教程面向入门 LLM 的开发者,深入浅出地介绍了对于开发者,如何构造 Prompt 并基于 OpenAI 提供的 API 实现包括总结、推断、转换等多种常用功能,是入门 LLM 开发的经典教程;LLM 正在逐步改变人们的生活,而对于开发者,如何基于 LLM 提供的 API 快速、便捷地开发一些具备更强能力、集成LLM 的应用,来便捷地实现一些更新颖、更实用的能力,是一个急需学习的重要能力。

python12222_的博客 2537

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Github 50k star!吴恩达+OpenAi编写<面向开发者的LLM入门教程> PDF!

今天给大家推荐一本由吴恩达和OpenAI团队共同编写的关于大型语言模型(LLM)的权威教程!

Langchain的博客 1196

吴恩达联合OpenAi共同编写<面向开发者的LLM入门教程> PDF!Github 50k star!

今天给大家推荐一本由吴恩达和OpenAI团队共同编写的关于大型语言模型(LLM)的权威教程!,在Github上已经高达50k star了,这含金量不用多说,在这里给大家强烈推荐一波,不多bb直接开始介绍!

huang9604的博客 1123

面向开发者的LLM入门课程

其它内容请读者自行下载PDF去学习,这里就不一一展示了。

2401_85375298的博客 853

【GitHub项目推荐--LLM Cookbook:面向开发者的中文大模型入门教程】⭐⭐⭐⭐

​​ 是一个面向开发者的大模型手册,由Datawhale团队打造,针对国内开发者的实际需求,提供全方位的大模型入门实践教程。该项目基于吴恩达老师的大模型系列课程内容,进行了筛选、翻译、复现和调优,覆盖从Prompt Engineering到RAG开发、模型微调的全部流程。🔗 ​GitHub地址🎓 ​核心价值​:中文教程 · 吴恩达课程 · 实践导向 · 全面覆盖 · 开源学习​项目背景​:​学习需求​:中文开发者学习需求​课程翻译​:吴恩达课程中文版​实践导向​:注重实践应用​本土化。

j8267643的博客 1304
上一篇: 一文弄懂 LLM 结构化数据生成原理
下一篇: RAG技术已经这么强大了,我们真的还需要微调吗?
AI_小站
博客等级 码龄3年 6255粉丝 1152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值