大模型应用开发实战基础

大模型应用开发实战基础

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,一经查实,立即删除!

相关文章

PostgreSQL的系统视图pg_stat_database_conflicts

PostgreSQL的系统视图pg_stat_database_conflicts 在 PostgreSQL 中, pg_stat_database_conflicts 是一个视图,用于监控并发操作导致的数据库冲突情况。了解和监控这些冲突可以帮助数据库管理员调优系统,以更好地处理并发事务。 pg_stat_da…

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

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

fyne的MultiLineEntry设置大小

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

(域渗透提权)CVE-2020-1472 NetLogon权限提升漏洞

目录 漏洞简介 漏洞检测 漏洞利用 使用脚本进行利用 使用Mimikatz进行利用 恢复用户哈希 漏洞简介 CVE-2020-1472是继永恒之蓝漏洞之后又一个好用的内网提权漏洞,影响Windows Server2008R2至2019的版本。只要攻击者能够访问到目标域控并且知道域控计算机名即…

九浅一深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,…

实时跟踪并显示Docker容器的最新日志

可以用以下命令实时跟踪并显示Docker容器的最新日志 例: 这条命令 docker logs --tail 200 -f docker1 的作用是: docker logs: 这部分指示要查看 Docker 容器的日志。--tail 200: 这个选项指定只显示最后的200行日志。这意味着你将只看到容器最近生…

JavaSE简易版扫雷小游戏

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

安徽大学学报-哲学社会科学版

《安徽大学学报》(哲学社会科学版)简介 安徽大学学报(哲学社会科学版)简要信息 刊 号 CN 34—1040/C ISSN 1001—5019 主 编 张治栋 地 址 安徽省合肥市肥西路3号 邮 编 230039 电 话 (0551)6…

Spring MVC的高级功能——异常处理(三)异常处理注解

一、ControllerAdvice注解的作用 从Spring 3.2开始,Spring 提供了一个新注解ControllerAdvice, ControllerAdvice有以下两个作用。 • 注解作用在类上时可以增强Controller,对Controller中被RequestMapping注解标注的方法加一些逻辑处理。…

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

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

C语言 输出所有的水仙花数

输出所有的“水仙花数”(水仙花数指一个三位数,其各位数字立方和等于该数本身。例如153是水仙花数,因为1^35^33^3153) 这个程序找出所有的三位水仙花数,并输出它们。 (如果每各数字立方和等于原数字&…

Java SE入门及基础(62) 线程池 执行器

线程池 1. 执行器 In all of the previous examples, theres a close connection between the task being done by a new thread, as defined by its Runnable object, and the thread itself, as defined by a Thread object. This works well for small applications, but…

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…

Oracle PL / SQL 插入insert 第二部分

DUAL表 dual是由具有一列和一行的oracle数据库(所有者SYS)拥有的表。 要评估1 1的添加,请执行以下SQl SELECT语句: SELECT 1 1 FROM dual; 快速找出oracle如何评估你对内置函数length()的使用。 SELE…

vlan基础相关

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