大模型应用开发实战基础

大模型应用开发实战基础

1. 背景

大模型如日中天,各行各业都受它影响,但是作为程序员,除了让它翻译代码不知道用它干什么,就像是拿着锤子的木匠,找不到钉子在哪。一边听着别人说2024是AI元年,一边又不知所措,很多时候对着ChatGPT的输入框不知道干什么。作为程序员,应该是接触AI的一线战士,但是很无力的感觉要被AI淘汰了一样。有人说懂 AI、懂编程、懂业务的超级个体,会是 AGI 时代最重要的人,本文我们从程序员视角去认识AI,去看看我们怎么去深入理解和应用AI,如何成为一个AI全栈工程师。

2. 大模型的知识体系

大模型可以分成下面几个方向:

  1. 交付:向量数据库,GPU等偏运维方向
  2. 产品:主要是负责用户体验和商业逻辑
  3. Fine-tuning:微调为主,但是要懂机器学习,Transformer,大模型训练,微调原理等
  4. 开发框架和工具栈:主要是基于Langchain等进行Agent框架开发,比如开发一个类似百度千帆平台,豆包AI平台等
  5. RAG:Embedding,从关键词搜索转换为向量思索,为大模型基座提供外界知识库
  6. API:用微调提升prompt的稳定性
  7. AI编程:帮助开发者使用AI提效,甚至开发AI程序员
  8. prompt:思维链,prompt调优,prompt攻防等

3.AI能干什么?

我们可以让大模型帮我们做很多事情,而且很多事情在输入框中用聊天的方式就可以解决:

  1. 按格式输出
  2. 分类
  3. 聚类
  4. 持续互动
  5. 解决技术相关问题
  6. 舆情分析
  7. 坐席质检
  8. 故障解释 既然聊天框就可以解决问题,我们还需要什么?很多场景我们无法去聊天框输入去问答案,比如说代码补全工具,比如我们要做一个产品,语音转文本场景,想让转化出的文本进行一些优化,也不能让用户复制粘贴去干,需要我们的程序能自动去问大模型。本文我们简单介绍一些大模型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='')`

大模型通俗的讲就是根据上文,猜下一个词(的概率):

image.png

用通俗不严谨的语言再稍微深入描述大模型的工作原理:

  1. 大模型可是个爱学习的小家伙,它把人类说过的话都记在了心里。这就是我们说的「机器学习」,而它学习的过程,我们叫它「训练」。
  2. 它还特别擅长记概率,把一串接一串的token可能跟着的token都记录下来了。这些记录,就是我们说的「参数」,也可以叫做「权重」。
  3. 给它几个token,它就能猜出下一个最可能的token是啥。这个过程,我们叫做「生成」,也有人叫它「推理」
  4. 用它生成的token,再结合之前的上下文,它就能继续猜下去,就像搭积木一样,一块接一块,搭出更多的文字。

那Token又是什么呢?再用通俗的语言描述一下:

  1. 可能是一个英文单词,也可能是半个,三分之一个。可能是一个中文词,或者一个汉字,也可能是半个汉字,甚至三分之一个汉字
  2. 大模型在开训前,需要先训练一个 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时代成为全栈工程师的重要性,以适应技术发展和行业变革的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/38564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中控室监控台在水处理行业的作用

随着工业化和城市化的快速推进,水处理行业的重要性日益凸显。作为确保水质安全、提高水资源利用效率的关键环节,水处理厂需要高效、稳定地运行。在这个过程中,中控室监控台发挥着不可或缺的作用。本文将从以下几个方面,详细阐述中…

fyne的MultiLineEntry设置大小

MultiLineEntry设置大小 在另一篇文章讲过,放入border布局中,可以最大化MultiLineEntry。 这里再介绍另一种方法:SetMinRowsVisible() func (e *Entry) SetMinRowsVisible(count int) {e.multiLineRows counte.Refresh() }SetMinRowsVisible强制mult…

九浅一深Jemalloc5.3.0 -- ④浅*配置

目前市面上有不少分析Jemalloc老版本的博文,但最新版本5.3.0却少之又少。而且5.3.0的架构与5之前的版本有较大不同,本着“与时俱进”、“由浅入深”的宗旨,我将逐步分析最新release版本Jemalloc5.3.0的实现。 另外,单讲实现代码是…

ShareSDK iOS端如何实现小红书分享

下载SDK 请登陆官网 ,找到SDK下载,勾选需要的平台下载 导入SDK (1)离线导入将上述下载到的SDK,直接将整个SDK资源文件拖进项目里,如下图: 并且勾选以下3个选项 在点击Finish,…

JavaSE简易版扫雷小游戏

描述:用户输入二维雷区的高和宽,输入确定地雷数,随机在地雷区生成地雷。用户输入横竖坐标进行挖雷,挖到地雷游戏以失败结束,并让用户选择是否再次游戏;没挖到雷,显示该区域8个方向地雷数。如果8…

uniapp + vue3 + Script Setup 写法变动 (持续更新)

一、uniapp 应用生命周期: https://uniapp.dcloud.net.cn/tutorial/vue3-composition-api.html 注意: 应用生命周期仅可在App.vue中监听,在其它页面监听无效。 二 、uniapp页面生命周期: https://uniapp.dcloud.net.cn/tutori…

Golang | Leetcode Golang题解之第212题单词搜索II

题目: 题解: type Trie struct {children map[byte]*Trieword string }func (t *Trie) Insert(word string) {node : tfor i : range word {ch : word[i]if node.children[ch] nil {node.children[ch] &Trie{children: map[byte]*Trie{}}}nod…

Zynq系列FPGA实现SDI视频编解码,基于GTX高速接口,提供5套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案在Xilinx--Kintex系列FPGA上的应用 3、详细设计方案设计原理框图SDI 输入设备Gv8601a 均衡器GTX 解串与串化SMPTE SD/HD/3G SDI IP核BT1120转RGB图像缓存视频读取控制HDMI输出RGB转BT1120Gv8500 驱…

vuepress使用简介及个人博客搭建

目录 一、介绍二、环境准备三、安装运行vuepress四、目录结构五、配置文件六、导航栏配置七、导航栏logo八、浏览器图标九、侧边栏配置十、添加 Git 仓库和编辑链接十一、部署到GitHub十二、搭建成功 一、介绍 VuePress 是 Vuejs 官方提供的一个是Vue驱动的静态网站生成器&…

Qt 配置ASan

Qt 配置ASan 文章目录 Qt 配置ASan摘要关于ASan(AddressSanitizer)在Qt中配置 ASan1. 安装必要的工具2. 修改项目的 .pro 文件3. 重新构建项目4. 运行应用程序5. 分析错误报告示例注意事项 关键字: Qt、 ASan、 AddressSanitizer 、 GCC …

CTFHUB-SSRF-Redis协议

本题需要用到: 在线编码网址:https://icyberchef.com/ gopherus工具:https://mp.csdn.net/mp_blog/creation/editor/139440201 开启题目,页面空白 和上一个题FastCGI协议一样,还是使用gopherus攻击redis ./gopheru…

vlan基础相关

7.2以太网交换基础 数据链路层也叫2层网络,用的是Mac地址,想到Mac地址就要想到交换机。 以太网协议(LAN)以太网是建立在CSMA/CD载波监听多路访问/冲突检测,机制上的广播型网络。CSMA工作原理是先监听,在介…

110kV以下变电所电力监控-安科瑞电力监控解决方案

一、系统介绍 变电站电力监控系统为110kV及以下用户变电站提供了完整的SCADA功能。 二、系统硬件 AM5SE系列微机保护装置 全电参量测量 谐波制动独立操作回路 可编程出口矩阵;定制化的逻辑设计;故障录波;事件记录、故障 录波数据&#x…

聊天交友系统开发专业语聊交友app开发搭建同城交友开发婚恋交友系统相亲app开发

1、上麦相亲互动:直播间内除了红娘外,还有男女用户两个视频麦位,直播间符合要求的用户可以申请上麦 2、公屏聊天:为上麦用户可以通过在公屏发言的方式参与直播间内的话题互动。 3、私信,异性用户之间可以发送私信消息,通过付费或开通会员可解…

法国工程师IMT联盟 密码学及其应用 2023年期末考试补考题

1 JAVA 安全 1.1 问题1 1.1.1 问题 用 2 或 3 句话解释 Java 执行模型(Java 虚拟机machine virtuelle Java))中引入introduit沙箱bac sable机制 mcanisme d’excution par isolation的目的。 1.1.2 问题解释 在 Java 执行模型(Java 虚拟机…

Java面试八股文

一、Redis 1. 使用场景 (1)Redis的数据持久化策略有哪些 RDB:全称Redis Database Backup file(Redis数据备份文件),也被叫作Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故…

【信息系统项目管理师】18年~23年案例概念型知识

文章目录 18上18下19上19下20上20下21上21下22年上22年下23年上 18上 请简述 ISO 9000 质量管理的原则 领导作用、 过程方法、 管理的系统方法、 与供方互利的关系、 基于事实的决策方法、 持续改进、 全员参与、 以顾客为关注焦点 概念 国家标准(GB/T 1 9000 2008)对质量的定…

嵌入式c语言2——预处理

在c语言中,头部内容,如include与define是不参与编译而直接预先处理的 如include相当于把头文件扩展,define相当于做了替换 c语言大型工程创建时,会有调试版本与发行版本,发行时不希望看到调试部分内容,此时…

基于多视点编码光场的全景三维重建方法

欢迎关注GZH《光场视觉》 摘要:在基于光场的一系列应用中,目标的三维重建是基础且关键的任务。普通光场只能重建单一视角而无法重建全景,并且在纹理特征匮乏的区域也无法生成准确的三维信息。针对以上问题,提出一种基于多视点编码…

存算一体架构或成为AI处理器技术发展关键

©作者|坚果 来源|神州问学 引言 马斯克巨资60亿美元打造的“超级算力工场”,通过串联10万块顶级NVIDIA H100 GPU,不仅震撼了AI和半导体行业,促使英伟达股价应声上涨6%,还强烈暗示了AI大模型及芯片需求的急剧膨胀。这一行动…