菜单

生成式AI简介

相关源文件

目的与范围

本文档提供了生成式AI的技术入门介绍,重点介绍了其工作原理和核心功能。它解释了大型语言模型(LLMs)的基本概念以及如何通过不同的API和库将它们集成到应用程序中。有关比较不同类型的LLM及其优点的具体信息,请参阅探索和比较不同的LLM

什么是生成式AI?

生成式AI是指能够生成新内容的人工智能系统,包括文本、图像和其他媒体类型,这些内容基于从训练数据中学习到的模式。与专注于分类或预测任务的传统AI系统不同,生成式AI会创建模仿人类创作内容的原创输出。

生成式AI的定义特征是它能够接受自然语言提示(用人类语言书写的普通句子),并产生有意义、语境适宜的响应,而无需用户具备专业的编程知识。

标题:从用户输入到代码实现的生成式AI处理流程

来源:[01-introduction-to-genai/README.md:67-88], [06-text-generation-apps/README.md:134-141]

生成式AI的历史发展

生成式AI经历了几个发展阶段

时代技术特性局限性
1960年代早期AI聊天机器人基于规则,关键词触发可扩展性差
1990年代统计机器学习从数据中学习模式有限的上下文理解能力
2000年代-2010年代神经网络和循环神经网络(RNNs)更好的上下文理解能力长序列处理困难
2017年至今Transformer 架构注意力机制、并行处理高计算要求

当前生成式AI模型(包括LLM)基于Transformer架构,使用来自书籍、文章和网站等各种来源的海量文本进行训练。

来源:[01-introduction-to-genai/README.md:42-68]

大型语言模型(LLMs)的工作原理

分词过程

标题:LLMs中的分词过程

在通过神经网络处理之前,LLMs将文本转换为数值表示

  1. 输入文本被分割成词元(tokens)(由单词、单词的一部分或字符组成的文本块)
  2. 每个词元被映射到模型词汇表中的一个词元索引(整数)
  3. 这些数值表示由核心模型处理

来源:[01-introduction-to-genai/README.md:74-76]

预测过程

LLMs以逐个词元的方式,通过扩展窗口模式生成文本

  1. 模型处理输入词元序列
  2. 它预测下一个词元的概率分布
  3. 根据此分布和配置参数选择一个词元
  4. 选定的词元会添加到输入中,供下一个预测周期使用

来源:[01-introduction-to-genai/README.md:78-80]

词元选择和温度

标题:带温度参数的词元选择过程

温度参数控制词元选择的随机性

  • 低温度(接近0):更具确定性的输出,总是选择概率最高的词元
  • 高温度(接近1):更随机的输出,使概率较低的词元有机会被选中

这种随机性模拟了创造性思维,并提供了多样的响应。

来源:[01-introduction-to-genai/README.md:80-81], [06-text-generation-apps/README.md:589-599]

生成式AI实现架构

标题:使用OpenAI库的生成式AI实现架构

来源:[06-text-generation-apps/README.md:114-128], [11-integrating-with-function-calling/README.md:55-69]

生成式AI应用类型

该代码库实现了几种不同类型的生成式AI应用

应用类型主要API方法描述关键参数出现于
文本生成openai.Completion.create()根据提示生成文本model, prompt, max_tokens, temperature[06-text-generation-apps/README.md]
聊天应用openai.ChatCompletion.create()通过消息历史进行对话交互model, messages (角色-内容对数组)[07-building-chat-applications/README.md]
函数调用client.chat.completions.create() 配合 functions 参数提取结构化数据并调用外部函数model, messages, functions, function_call[11-integrating-with-function-calling/README.md]
搜索应用openai.Embedding.create()为语义搜索创建向量嵌入model, input[08-building-search-applications/README.md]
图像生成openai.Image.create()根据文本描述生成图像prompt, size, n, temperature[09-building-image-applications/README.md]

来源:[06-text-generation-apps/README.md:134-141], [07-building-chat-applications/README.md:74-76], [11-integrating-with-function-calling/README.md:267-273], [09-building-image-applications/README.md:136-142]

文本生成实现

标题:文本生成应用程序流程

使用OpenAI库的基本文本生成实现

来源:[06-text-generation-apps/README.md:180-198]

聊天应用实现

聊天应用通过结构化的消息数组维护对话上下文,从而建立在文本生成之上

聊天应用通常通过在每次交互时将新消息追加到messages数组来维护对话历史。

来源:[07-building-chat-applications/README.md:74-76]

函数调用实现

函数调用扩展了聊天界面,以实现结构化数据提取和API集成

标题:带有代码实体的函数调用实现流程

函数调用允许从用户查询中提取结构化数据以调用外部API

  1. 定义具有LLM可以识别和填写的参数的函数
  2. 将这些函数包含在API请求中
  3. 处理响应,查看是否调用了函数
  4. 执行相应的Python函数
  5. 将函数结果发送回LLM以获得最终响应

来源:[11-integrating-with-function-calling/README.md:267-273], [11-integrating-with-function-calling/README.md:342-392]

LLM交互的关键参数

控制LLM行为的配置参数

参数目的效果
model指定要使用的语言模型"gpt-3.5-turbo", "davinci-002"等不同的功能、成本和性能
temperature控制输出的随机性0到1较低的值:更确定性,较高的值:更具创意
max_tokens限制响应的长度整型防止响应过长,控制成本
n生成的完成次数整型提供多个备选响应
functions定义结构化数据提取JSON 对象启用函数调用功能
function_call控制函数调用行为"auto", "none" 或特定函数确定何时调用函数

来源:[06-text-generation-apps/README.md:226-237], [11-integrating-with-function-calling/README.md:222-245]

限制和注意事项

在实现生成式AI应用程序时,请注意这些限制

  1. 非确定性输出:即使输入和温度设置相同,响应也会有所不同
  2. 幻觉:模型可能会生成听起来合理但事实错误的信息
  3. 词元限制:模型有最大的上下文长度(输入+输出)
  4. 负责任的AI考量:需要实现内容过滤和偏见缓解的防护措施
  5. 成本考量:API使用通常按词元数量计费

来源:[01-introduction-to-genai/README.md:114-115], [03-using-generative-ai-responsibly/README.md]

结论

本生成式AI入门为您理解大型语言模型的工作原理及其如何集成到应用程序中奠定了基础。代码库演示了多种利用这些能力的方法,涵盖了从简单的文本生成到复杂的函数调用集成等不同用例。

要开发生成式AI应用程序,首先需要理解您的用例,选择合适的集成模型(文本生成、聊天、函数调用等),然后仔细考虑温度和词元限制等参数,并实现相应的OpenAI API方法。

来源:[01-introduction-to-genai/README.md], [06-text-generation-apps/README.md]