# openai
**Repository Path**: dong618/openai
## Basic Information
- **Project Name**: openai
- **Description**: openai API
- **Primary Language**: Python
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-08-14
- **Last Updated**: 2024-08-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 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的使用。
## 拉取代码
你可以通过克隆此仓库到你的本地机器来开始:
```shell
git clone https://github.com/DjangoPeng/openai-quickstart.git
```
然后导航至目录,并按照单个模块的指示开始操作。
## 搭建开发环境
本项目使用 Python v3.10 开发,完整 Python 依赖软件包见[requirements.txt](requirements.txt)。
关键依赖的官方文档如下:
- Python 环境管理 [Miniconda](https://docs.conda.io/projects/miniconda/en/latest/)
- Python 交互式开发环境 [Jupyter Lab](https://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html)
- 大模型应用开发框架 [LangChain](https://python.langchain.com/docs/get_started/installation)
- [OpenAI Python SDK ](https://github.com/openai/openai-python?tab=readme-ov-file#installation)
**以下是详细的安装指导(以 Ubuntu 操作系统为例)**:
### 安装 Miniconda
```shell
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`。
```shell
conda create -n langchain python=3.10
# 激活环境
conda activate langchain
```
之后每次使用需要激活此环境。
### 安装 Python 依赖软件包
```shell
pip install -r requirements.txt
```
### 配置 OpenAI API Key
根据你使用的命令行工具,在 `~/.bashrc` 或 `~/.zshrc` 中配置 `OPENAI_API_KEY` 环境变量:
```shell
export OPENAI_API_KEY="xxxx"
```
### 安装和配置 Jupyter Lab
上述开发环境安装完成后,使用 Miniconda 安装 Jupyter Lab:
```shell
conda install -c conda-forge jupyterlab
```
使用 Jupyter Lab 开发的最佳实践是后台常驻,下面是相关配置(以 root 用户为例):
```shell
# 生成 Jupyter Lab 配置文件,
jupyter lab --generate-config
```
打开上面执行输出的`jupyter_lab_config.py`配置文件后,修改以下配置项:
```python
c.ServerApp.allow_root = True # 非 root 用户启动,无需修改
c.ServerApp.ip = '*'
```
使用 nohup 后台启动 Jupyter Lab
```shell
$ 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](https://arxiv.org/abs/1409.0473)
- [An Attentive Survey of Attention Models](https://arxiv.org/abs/1904.02874)
- [Transformer:Attention is All you Need](https://arxiv.org/abs/1706.03762)
- [BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding(https://arxiv.org/abs/1810.04805) | [[作业](docs/homework_01.md)] |
| 第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](https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf)
- [GPT-2: Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf)
- [GPT-3: Language Models are Few-Shot Learners](https://arxiv.org/abs/2005.14165)
额外阅读:
- [GPT-4: Architecture, Infrastructure, Training Dataset, Costs, Vision, MoE](https://www.semianalysis.com/p/gpt-4-architecture-infrastructure)
- [GPTs are GPTs: An Early Look at the Labor Market Impact Potential of Large Language Models](https://arxiv.org/abs/2303.10130)
- [Sparks of Artificial General Intelligence: Early experiments with GPT-4](https://arxiv.org/abs/2303.12712)
| [[作业](docs/homework_02.md)] |
| 第3节 | 大模型开发基础:OpenAI Embedding
- 通用人工智能的前夜
- "三个世界"和"图灵测试"
- 计算机数据表示
- 表示学习和嵌入
Embeddings Dev 101
- 课程项目:GitHub openai-quickstart
- 快速上手 OpenAI Embeddings | 建议阅读:
- [Representation Learning: A Review and New Perspectives](https://arxiv.org/abs/1206.5538)
- [Word2Vec: Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/abs/1301.3781)
- [GloVe: Global Vectors for Word Representation](https://nlp.stanford.edu/pubs/glove.pdf)
额外阅读:
- [Improving Distributional Similarity with Lessons Learned from Word Embeddings](http://www.aclweb.org/anthology/Q15-1016)
- [Evaluation methods for unsupervised word embeddings](http://www.aclweb.org/anthology/D15-1036) | [[作业](docs/homework_03.md)]
代码:
[[embedding](openai_api/embedding.ipynb)] |
| 第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](https://platform.openai.com/docs/models)
- [OpenAI Completions API](https://platform.openai.com/docs/guides/gpt/completions-api)
- [OpenAI Chat Completions API](https://platform.openai.com/docs/guides/gpt/chat-completions-api) | 代码:
[[models](openai_api/models.ipynb)]
[[tiktoken](openai_api/count_tokens_with_tiktoken.ipynb)] |
| 第5节 | AI大模型应用最佳实践
- 如何提升GPT模型使用效率与质量
- AI大模型应用最佳实践
- 文本创作与生成
- 文章摘要和总结
- 小说生成与内容监管
- 分步骤执行复杂任务
- 评估模型输出质量
- 构造训练标注数据
- 代码调试助手
- 新特性: Function Calling 介绍与实战 | 建议阅读
- [GPT Best Practices](https://platform.openai.com/docs/guides/gpt-best-practices)
- [Function Calling](https://platform.openai.com/docs/guides/gpt/function-calling) | 代码:
[Function Calling](openai_api/function_call.ipynb) |
| 第6节 | 实战:OpenAI-Translator
- OpenAI-Translator 市场需求分析
- OpenAI-Translator 产品定义与功能规划
- OpenAI-Translator 技术方案与架构设计
- OpenAI 模块设计
- OpenAI-Translator 实战
| | 代码:
[pdfplumber](openai-translator/jupyter/pdfplumber.ipynb) |
| 第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](chatgpt-plugins/todo-list)]
[[Weather Forecast](chatgpt-plugins/weather-forecast)] |
| 第8节 | 大模型应用开发框架 LangChain (上)
- LangChain 101
- LangChain 是什么
- 为什么需要 LangChain
- LangChain 典型使用场景
- LangChain 基础概念与模块化设计
- LangChain 核心模块入门与实战
- 标准化的大模型抽象:Mode I/O
- 模板化输入:Prompts
- 语言模型:Models
- 规范化输出:Output Parsers | | 代码:
[[model io](langchain/jupyter/model_io)] |
| 第9节 | 大模型应用开发框架 LangChain (中)
- 大模型应用的最佳实践 Chains
- 上手你的第一个链:LLM Chain
- 串联式编排调用链:Sequential Chain
- 处理超长文本的转换链:Transform Chain
- 实现条件判断的路由链:Router Chain
- 赋予应用记忆的能力: Memory
- Momory System 与 Chain 的关系
- 记忆基类 BaseMemory 与 BaseChatMessageMemory
- 服务聊天对话的记忆系统
- ConversationBufferMemory
- ConversationBufferWindowMemory
- ConversationSummaryBufferMemory | | 代码:
[[chains](langchain/jupyter/chains)]
[[memory](langchain/jupyter/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](langchain/jupyter/data_connection)]
[[agents](langchain/jupyter/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](langchain/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](langchain/jupyter/autogpt)] |
| 第13节 | Sales-Consultant 业务流程与价值分析
- Sales-Consultant 技术方案与架构设计
- 使用 GPT-4 生成销售话术
- 使用 FAISS 向量数据库存储销售问答话术
- 使用 RetrievalQA 检索销售话术数据
- 使用 Gradio 实现聊天机器人的图形化界面
- 实战 LangChain 版 Sales-Consultant | | 代码:
[[sales_chatbot](langchain/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 图形化界面 <
## 贡献
贡献是使开源社区成为学习、激励和创造的惊人之处。非常感谢你所做的任何贡献。如果你有任何建议或功能请求,请先开启一个议题讨论你想要改变的内容。
## 许可证
该项目根据Apache-2.0许可证的条款进行许可。详情请参见[LICENSE](LICENSE)文件。
## 联系
Django Peng - pjt73651@email.com
项目链接: https://github.com/DjangoPeng/openai-quickstart