# 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 图形化界面 < ## 贡献 贡献是使开源社区成为学习、激励和创造的惊人之处。非常感谢你所做的任何贡献。如果你有任何建议或功能请求,请先开启一个议题讨论你想要改变的内容。 Github ## 许可证 该项目根据Apache-2.0许可证的条款进行许可。详情请参见[LICENSE](LICENSE)文件。 ## 联系 Django Peng - pjt73651@email.com 项目链接: https://github.com/DjangoPeng/openai-quickstart