大模型应用开发实战基础
1. 背景
大模型如日中天,各行各业都受它影响,但是作为程序员,除了让它翻译代码不知道用它干什么,就像是拿着锤子的木匠,找不到钉子在哪。一边听着别人说2024是AI元年,一边又不知所措,很多时候对着ChatGPT的输入框不知道干什么。作为程序员,应该是接触AI的一线战士,但是很无力的感觉要被AI淘汰了一样。有人说懂 AI、懂编程、懂业务的超级个体,会是 AGI 时代最重要的人,本文我们从程序员视角去认识AI,去看看我们怎么去深入理解和应用AI,如何成为一个AI全栈工程师。
2. 大模型的知识体系
大模型可以分成下面几个方向:
- 交付:向量数据库,GPU等偏运维方向
- 产品:主要是负责用户体验和商业逻辑
- Fine-tuning:微调为主,但是要懂机器学习,Transformer,大模型训练,微调原理等
- 开发框架和工具栈:主要是基于Langchain等进行Agent框架开发,比如开发一个类似百度千帆平台,豆包AI平台等
- RAG:Embedding,从关键词搜索转换为向量思索,为大模型基座提供外界知识库
- API:用微调提升prompt的稳定性
- AI编程:帮助开发者使用AI提效,甚至开发AI程序员
- prompt:思维链,prompt调优,prompt攻防等
3.AI能干什么?
我们可以让大模型帮我们做很多事情,而且很多事情在输入框中用聊天的方式就可以解决:
- 按格式输出
- 分类
- 聚类
- 持续互动
- 解决技术相关问题
- 舆情分析
- 坐席质检
- 故障解释 既然聊天框就可以解决问题,我们还需要什么?很多场景我们无法去聊天框输入去问答案,比如说代码补全工具,比如我们要做一个产品,语音转文本场景,想让转化出的文本进行一些优化,也不能让用户复制粘贴去干,需要我们的程序能自动去问大模型。本文我们简单介绍一些大模型API交互的方式。
4. 什么是大模型
下面用程序演示「生成下一个字」。可以自己修改 prompt 试试。还可以使用相同的 prompt 运行多次。
ini
复制代码
`from openai import OpenAI`
`import os``from dotenv import load_dotenv, find_dotenv`
`_ = load_dotenv(find_dotenv())``client = OpenAI()``prompt = "今天天气很" # 改明天试试`
`response = client.completions.create(``model="gpt-3.5-turbo-instruct",``prompt=prompt,``max_tokens=20,``stream=True`
`)``for chunk in response:``print(chunk.choices[0].text, end='')`
大模型通俗的讲就是根据上文,猜下一个词(的概率):
用通俗不严谨的语言再稍微深入描述大模型的工作原理:
- 大模型可是个爱学习的小家伙,它把人类说过的话都记在了心里。这就是我们说的「机器学习」,而它学习的过程,我们叫它「训练」。
- 它还特别擅长记概率,把一串接一串的token可能跟着的token都记录下来了。这些记录,就是我们说的「参数」,也可以叫做「权重」。
- 给它几个token,它就能猜出下一个最可能的token是啥。这个过程,我们叫做「生成」,也有人叫它「推理」
- 用它生成的token,再结合之前的上下文,它就能继续猜下去,就像搭积木一样,一块接一块,搭出更多的文字。
那Token又是什么呢?再用通俗的语言描述一下:
- 可能是一个英文单词,也可能是半个,三分之一个。可能是一个中文词,或者一个汉字,也可能是半个汉字,甚至三分之一个汉字
- 大模型在开训前,需要先训练一个 tokenizer 模型。它能把所有的文本,切成 token
5. 调用openai api
作为程序员,接下来我们用api和大模型交互。
先安装OpenAI Python 库:
css
复制代码
pip install --upgrade openai
发送一条消息:
ini
复制代码
from openai import OpenAI
import os
# 加载 .env 文件到环境变量from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())# 初始化 OpenAI 服务。会自动从环境变量加载 OPENAI_API_KEY 和 OPENAI_BASE_URL
client = OpenAI()
# 消息格式
messages = [{"role": "system","content": "你是AI编程助手小瓜,将我输入的Java代码转换为TS代码,回答ts语法相关的问题"},{"role": "user","content": "ts有几种基本类型数据"},]# `调用 GPT-3.5`chat_completion = client.chat.completions.create(model="gpt-3.5-turbo",messages=messages`
)# 输出回复print(chat_completion.choices[0].message.content)
6. 总结
本文为程序员提供了大模型应用开发的实战指南,从理解AI的基础知识体系到实际应用场景,涵盖了从运维交付到产品开发、微调技术、开发框架、RAG技术、API使用和AI编程等多个方面。文章通过示例代码展示了如何使用OpenAI API与大模型进行交互,解释了大模型的工作原理和Token的概念,并强调了程序员在AI时代成为全栈工程师的重要性,以适应技术发展和行业变革的需求。