Skip to content

A comprehensive guide to understanding and implementing large language models with hands-on examples using LangChain for GenAI applications.

License

Notifications You must be signed in to change notification settings

cndu/openai-quickstart_du

 
 

Repository files navigation

OpenAI 快速入门


English | 中文

本项目旨在为所有对大型语言模型及其在生成式人工智能(AIGC)场景中应用的人们提供一站式学习资源。通过提供理论基础,开发基础,和实践示例,该项目对这些前沿主题提供了全面的指导。

特性

  • 大语言模型的理论和开发基础:深入探讨BERT和GPT系列等大型语言模型的内部工作原理,包括它们的架构、训练方法、应用等。

  • 基于OpenAI的二次开发:OpenAI的Embedding、GPT-3.5、GPT-4模型的快速上手和应用,以及函数调用(Function Calling)和ChatGPT插件等最佳实践

  • 使用LangChain进行GenAI应用开发:通过实例和教程,利用LangChain开发GenAI应用程序,展示大型语言模型(AutoGPT、RAG-chatbot、机器翻译)的实际应用。

  • LLM技术栈与生态:数据隐私与法律合规性,GPU技术选型指南,Hugging Face快速入门指南,ChatGLM的使用。

拉取代码

你可以通过克隆此仓库到你的本地机器来开始:

git clone https://github.com/DjangoPeng/openai-quickstart.git

然后导航至目录,并按照单个模块的指示开始操作。

搭建开发环境

本项目使用 Python v3.10 开发,完整 Python 依赖软件包见requirements.txt

关键依赖的官方文档如下:

以下是详细的安装指导(以 Ubuntu 操作系统为例)

安装 Miniconda

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh

安装完成后,建议新建一个 Python 虚拟环境,命名为 langchain

conda create -n langchain python=3.10

# 激活环境
conda activate langchain 

之后每次使用需要激活此环境。

安装 Python 依赖软件包

pip install -r requirements.txt

配置 OpenAI API Key

根据你使用的命令行工具,在 ~/.bashrc~/.zshrc 中配置 OPENAI_API_KEY 环境变量:

export OPENAI_API_KEY="xxxx"

安装和配置 Jupyter Lab

上述开发环境安装完成后,使用 Miniconda 安装 Jupyter Lab:

conda install -c conda-forge jupyterlab

使用 Jupyter Lab 开发的最佳实践是后台常驻,下面是相关配置(以 root 用户为例):

# 生成 Jupyter Lab 配置文件,
jupyter lab --generate-config

打开上面执行输出的jupyter_lab_config.py配置文件后,修改以下配置项:

c.ServerApp.allow_root = True # 非 root 用户启动,无需修改
c.ServerApp.ip = '*'

使用 nohup 后台启动 Jupyter Lab

$ nohup jupyter lab --port=8000 --NotebookApp.token='替换为你的密码' --notebook-dir=./ &

Jupyter Lab 输出的日志将会保存在 nohup.out 文件(已在 .gitignore中过滤)。

课程表

课表 描述 课程资料 任务
第1节 大模型基础:理论与技术的演进
- 初探大模型:起源与发展
- 预热篇:解码注意力机制
- 变革里程碑:Transformer的崛起
- 走向不同:GPT与BERT的选择
建议阅读:
- Attention Mechanism: Neural Machine Translation by Jointly Learning to Align and Translate
- An Attentive Survey of Attention Models
- Transformer:Attention is All you Need
- [BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding(https://arxiv.org/abs/1810.04805)
[作业]
第2节 GPT 模型家族:从始至今
- 从GPT-1到GPT-3.5:一路的风云变幻
- ChatGPT:赢在哪里
- GPT-4:一个新的开始
提示学习(Prompt Learning)
- 思维链(Chain-of-Thought, CoT):开山之作
- 自洽性(Self-Consistency):多路径推理
- 思维树(Tree-of-Thoughts, ToT):续写佳话
建议阅读:
- GPT-1: Improving Language Understanding by Generative Pre-training
- GPT-2: Language Models are Unsupervised Multitask Learners
- GPT-3: Language Models are Few-Shot Learners


额外阅读:
- GPT-4: Architecture, Infrastructure, Training Dataset, Costs, Vision, MoE
- GPTs are GPTs: An Early Look at the Labor Market Impact Potential of Large Language Models
- Sparks of Artificial General Intelligence: Early experiments with GPT-4

[作业]
第3节 大模型开发基础:OpenAI Embedding
- 通用人工智能的前夜
- "三个世界"和"图灵测试"
- 计算机数据表示
- 表示学习和嵌入
Embeddings Dev 101
- 课程项目:GitHub openai-quickstart
- 快速上手 OpenAI Embeddings
建议阅读:
- Representation Learning: A Review and New Perspectives
- Word2Vec: Efficient Estimation of Word Representations in Vector Space
- GloVe: Global Vectors for Word Representation

额外阅读:

- Improving Distributional Similarity with Lessons Learned from Word Embeddings
- Evaluation methods for unsupervised word embeddings
[作业]
代码:
[embedding]
第4节 OpenAI 大模型开发与应用实践
- OpenAI大型模型开发指南
- OpenAI 语言模型总览
- OpenAI GPT-4, GPT-3.5, GPT-3, Moderation
- OpenAI Token 计费与计算
OpenAI API 入门与实战
- OpenAI Models API
- OpenAI Completions API
- OpenAI Chat Completions API
- Completions vs Chat Completions
OpenAI 大模型应用实践
- 文本内容补全初探(Text Completion)
- 聊天机器人初探(Chat Completion)
建议阅读:

- OpenAI Models
- OpenAI Completions API
- OpenAI Chat Completions API
代码:
[models]
[tiktoken]
第5节 AI大模型应用最佳实践
- 如何提升GPT模型使用效率与质量
- AI大模型应用最佳实践
- 文本创作与生成
- 文章摘要和总结
- 小说生成与内容监管
- 分步骤执行复杂任务
- 评估模型输出质量
- 构造训练标注数据
- 代码调试助手
- 新特性: Function Calling 介绍与实战
建议阅读
- GPT Best Practices
- Function Calling
代码:
Function Calling
第6节 实战:OpenAI-Translator
- OpenAI-Translator 市场需求分析
- OpenAI-Translator 产品定义与功能规划
- OpenAI-Translator 技术方案与架构设计
- OpenAI 模块设计
- OpenAI-Translator 实战
代码:
pdfplumber
第7节 实战:ChatGPT Plugin 开发
- ChatGPT Plugin 开发指南
- ChatGPT Plugin 介绍
- ChatGPT Plugin 介绍
- 样例项目:待办(Todo)管理插件
- 实战样例部署与测试
- ChatGPT 开发者模式
- 实战:天气预报(Weather Forecast)插件开发
- Weather Forecast Plugin 设计与定义
- 天气预报函数服务化
- 第三方天气查询平台对接
- 实战 Weather Forecast Plugin
- Function Calling vs ChatGPT plugin
代码:
[todo list]
[Weather Forecast]
第8节 大模型应用开发框架 LangChain (上)
- LangChain 101
- LangChain 是什么
- 为什么需要 LangChain
- LangChain 典型使用场景
- LangChain 基础概念与模块化设计
- LangChain 核心模块入门与实战
- 标准化的大模型抽象:Mode I/O
- 模板化输入:Prompts
- 语言模型:Models
- 规范化输出:Output Parsers
代码:
[model io]
第9节 大模型应用开发框架 LangChain (中)
- 大模型应用的最佳实践 Chains
- 上手你的第一个链:LLM Chain
- 串联式编排调用链:Sequential Chain
- 处理超长文本的转换链:Transform Chain
- 实现条件判断的路由链:Router Chain
- 赋予应用记忆的能力: Memory
- Momory System 与 Chain 的关系
- 记忆基类 BaseMemory 与 BaseChatMessageMemory
- 服务聊天对话的记忆系统
- ConversationBufferMemory
- ConversationBufferWindowMemory
- ConversationSummaryBufferMemory
代码:
[chains]
[memory]
第10节 大模型应用开发框架 LangChain (下)
- 框架原生的数据处理流 Data Connection
- 文档加载器(Document Loaders)
- 文档转换器(Document Transformers)
- 文本向量模型(Text Embedding Models)
- 向量数据库(Vector Stores)
- 检索器(Retrievers)
- 构建复杂应用的代理系统 Agents
- Agent 理论基础:ReAct
- LLM 推理能力:CoT, ToT
- LLM 操作能力:WebGPT, SayCan
- LangChain Agents 模块设计与原理剖析
- Module: Agent, Tools, Toolkits,
- Runtime: AgentExecutor, PlanAndExecute , AutoGPT,
- 上手第一个Agent:Google Search + LLM
- 实战 ReAct:SerpAPI + LLM-MATH
代码:
[data connection]
[agents]
第11节 实战: LangChain 版 OpenAI-Translator v2.0
- 深入理解 Chat Model 和 Chat Prompt Template
- 温故:LangChain Chat Model 使用方法和流程
- 使用 Chat Prompt Template 设计翻译提示模板
- 使用 Chat Model 实现双语翻译
- 使用 LLMChain 简化构造 Chat Prompt
- 基于 LangChain 优化 OpenAI-Translator 架构设计
- 由 LangChain 框架接手大模型管理
- 聚焦应用自身的 Prompt 设计
- 使用 TranslationChain 实现翻译接口
- 更简洁统一的配置管理
- OpenAI-Translator v2.0 功能特性研发
- 基于Gradio的图形化界面设计与实现
- 基于 Flask 的 Web Server 设计与实现
代码:
[openai-translator]
第12节 实战: LangChain 版Auto-GPT
- Auto-GPT 项目定位与价值解读
- Auto-GPT 开源项目介绍
- Auto-GPT 定位:一个自主的 GPT-4 实验
- Auto-GPT 价值:一种基于 Agent 的 AGI 尝试
- LangChain 版 Auto-GPT 技术方案与架构设计
- 深入理解 LangChain Agents
- LangChain Experimental 模块
- Auto-GPT 自主智能体设计
- Auto-GPT Prompt 设计
- Auto-GPT Memory 设计
- 深入理解 LangChain VectorStore
- Auto-GPT OutputParser 设计
- 实战 LangChain 版 Auto-GPT
代码:
[autogpt]
第13节 Sales-Consultant 业务流程与价值分析
- Sales-Consultant 技术方案与架构设计
- 使用 GPT-4 生成销售话术
- 使用 FAISS 向量数据库存储销售问答话术
- 使用 RetrievalQA 检索销售话术数据
- 使用 Gradio 实现聊天机器人的图形化界面
- 实战 LangChain 版 Sales-Consultant
代码:
[sales_chatbot]
第14节 大模型时代的开源与数据协议
- 什么是开源?
- 广泛使用的开源协议和数据协议
- Llama 是不是伪开源?
- ChatGLM2-6B 的开源协议
大语言模型的可解释性
- 提高模型决策过程的透明度
- Stanford Alpaca 的相关研究
大语言模型应用的法规合规性
- 中国大陆:生成式人工智能服务备案
- 国际化:数据隐私与保护(以 GDPR 为例)
- 企业合规性应对要点
第15节 大模型时代的Github:Hugging Face
- Hugging Face 是什么?
- Hugging Face Transformers 库
- Hugging Face 开源社区:Models, Datasets, Spaces, Docs
- 大模型横向对比
- Open LLM Leaderboard(大模型天梯榜)
显卡选型推荐指南
- GPU vs 显卡
- GPU Core vs AMD CU
- CUDA Core vs Tensor Core
- N卡的架构变迁
- 显卡性能天梯榜
第16节 清华 GLM 大模型家族
- 最强基座模型 GLM-130B
- 增强对话能力 ChatGLM
- 开源聊天模型 ChatGLM2-6B
- 联网检索能力 WebGLM
- 初探多模态 VisualGLM-6B
- 代码生成模型 CodeGeex2
ChatGLM2-6B 大模型应用开发
- ChatGLM2-6B 私有化部署
- HF Transformers Tokenizer
- HF Transformers Model
- 将模型同步至 Hugging Face
- 使用 Gradio 赋能 ChatGLM2-6B 图形化界面 <

贡献

贡献是使开源社区成为学习、激励和创造的惊人之处。非常感谢你所做的任何贡献。如果你有任何建议或功能请求,请先开启一个议题讨论你想要改变的内容。

Github

许可证

该项目根据Apache-2.0许可证的条款进行许可。详情请参见LICENSE文件。

联系

Django Peng - [email protected]

项目链接: https://github.com/DjangoPeng/openai-quickstart

About

A comprehensive guide to understanding and implementing large language models with hands-on examples using LangChain for GenAI applications.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 97.8%
  • Python 2.2%