大模型应用开发实战基础

news2024/10/6 1:03:42

大模型应用开发实战基础

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.coloradmin.cn/o/1886236.html

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

相关文章

基于X86+FPGA的精密加工检测设备解决方案

应用场景 随着我国高新技术的发展和国防现代化发展,航空、航天等领域需 要的大型光电子器件,微型电子机械、 光 电信息等领域需要的微型器件,还有一些复杂零件的加工需求日益增加,这些都需要借助精密甚至超精密的加工检测设备 客…

Asp.NET identity以及Owin

》》》Identity是集成到Owin框架中中 ● Microsoft.AspNet.Identity.Core:Identity的核心类库,实现了身份验证的核心功能,并提供了拓展接口。● Microsoft.AspNet.Identity.EntityFramework:Identity数据持久化的EF实现。   ● …

强化学习的数学原理:最优贝尔曼公式

大纲 贝尔曼最优公式是贝尔曼公式的一个特殊情况,但其也非常重要。 本节课很重要的两个概念和一个工具: 工具不用多说,就是贝尔曼最优公式,概念则是 optimal state value(最优状态价值) 和 optimal polic…

文件中各个函数返回----EOF----NULL---非零值>>>>>区分

fopen 返回值:操作正常返回文件指针, 失败返回NULL fclose 返回值:操作正常返回 0 失败返回EOF 不关闭文件会丢失 fgetc 返回值: 成功读入字符 失败返回EOF fputc 返回值:成功输出的字符 失败返回EOF fgets …

香橙派OrangePi AIpro初体验:当小白拿到一块开发板第一时间会做什么?

文章目录 香橙派OrangePi AIpro初体验:当小白拿到一块高性能AI开发板第一时间会做什么前言一、香橙派OrangePi AIpro概述1.简介2.引脚图开箱图片 二、使用体验1.基础操作2.软件工具分析 三、香橙派OrangePi AIpro.测试Demo1.测试Demo1:录音和播音(USB接口…

MySQL的并发控制、事务、日志

目录 一.并发控制 1.锁机制 2.加锁与释放锁 二.事务(transactions) 1.事物的概念 2.ACID特性 3.事务隔离级别 三.日志 1.事务日志 2.错误日志 3.通用日志 4.慢查询日志 5.二进制日志 备份 一.并发控制 在 MySQL 中,并发控制是确…

pandas数据分析(5)

pandas使用Numpy的np.nan代表缺失数据,显示为NaN。NaN是浮点数标准中地Not-a-Number。对于时间戳,则使用pd.NaT,而文本使用的是None。 首先构造一组数据: 使用None或者np.nan来表示缺失的值: 清理DataFrame时&#xf…

ubuntu apt命令 出现红色弹框 Daemons using outdated libraries

1. 弹框没截图,是因为ubuntu22.04一个新特性导致的,由 needrestart 命令触发,默认情况是交互性质的,也就是会中断在这里需要手动要处理提示。 2. 修改/etc/needrestart/needrestart.conf 文件,将 #$nrconf{restart} …

APKDeepLens:一款针对Android应用程序的安全扫描工具

关于APKDeepLens APKDeepLens是一款针对Android应用程序的安全扫描工具,该工具基于Python开发,旨在扫描和识别Android应用程序(APK文件)中的安全漏洞。 APKDeepLens主要针对的是OWASP Top 10移动端安全漏洞,并为开发人…

力扣热100 哈希

哈希 1. 两数之和49.字母异位词分组128.最长连续序列 1. 两数之和 题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。…

计算机缺少d3dcompiler_43.dll无法继续执行代码怎么修复

打开游戏或许软件程序时候,我们会经常遇到各式各样的问题,比如找不到d3dcompiler_43.dll无法继续执行代码就是非常常见的问题,今天我叫大家如何解决遇到d3dcompiler_43.dll丢失问题,也详细介绍d3dcompiler_43.dll文件是什么与丢失…

什么方法能快速分享视频给他人?视频二维码提供预览的制作技巧

现在想要分享一个或者多个视频时,很多人会选择将视频生成二维码的方法来展现视频内容,通过这种方式可以让多人同时扫码查看同一个视频,有效提升其他人获取内容的速度及视频传播的效率。那么视频转换成二维码的方法是什么样的呢? …

replace()方法——替换字符串

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 replace()方法用于将某一字符串中一部分字符替换为指定的新字符,如果不指定新字符,那么原字符将被直接去除&#x…

数据库取出来的日期格式是数组格式,序列化日期格式

序列化前,如图所示: 解决方式,序列化日期(localdatetime)格式 步骤一、添加序列化类 package com.abliner.test.common.configure;import com.alibaba.fastjson.serializer.JSONSerializer; import com.alibaba.fas…

[图解]企业应用架构模式2024新译本讲解19-数据映射器1

1 00:00:01,720 --> 00:00:03,950 下一个我们要讲的就是 2 00:00:04,660 --> 00:00:07,420 数据映射器这个模式 3 00:00:09,760 --> 00:00:13,420 这个也是在数据源模式里面 4 00:00:13,430 --> 00:00:14,820 用得最广泛的 5 00:00:16,250 --> 00:00:19,170…

高编:进程间通信 IPC interprocess communicate

一、进程间三大类通信 1、古老的通信方式 无名管道 有名管道 信号 2、IPC对象通信 system v(5) BSD suse fedora kernel.org 消息队列(用的相对少,这里不讨论) 共享内存 信号量集(进程间做互斥与同步semaphore) 3、socket通信 网络通…

AD快速导入立创3D模型

在AD绘制PCB时,可以添加3D模型,在绘制完成PCB后就可以导出3D图给结构工程师核对,方便产品的开发。这里介绍一种可以比较快完成3D导入的方式。 一、PyCharm代码 打开PyCharm,在运行本代码时,需要安装第三方包codecs&a…

synchronized用法解析

锁的意义: 比如我跟我老弟要用电脑,我想学java,他想拿电脑打LOL,如果我敲java代码敲的正嗨皮,他突然把电脑抢了过去,代码还没保存,就被他拿去打LOL了,很✓8,那么如何解决…

基于人脸68特征点识别的美颜算法(一) 大眼算法 C++

1、加载一张原图&#xff0c;并识别人脸的68个特征点 cv::Mat img cv::imread("5.jpg");// 人脸68特征点的识别函数vector<Point2f> points_vec dectectFace68(img);// 大眼效果函数Mat dst0 on_BigEye(800, img, points_vec);2、函数 vector<Point2f&g…

BMA580 运动传感器

型号简介 BMA580是博世&#xff08;bosch-sensortec&#xff09;的一款先进的、超小型加速度传感器。具有独特的骨传导语音活动检测功能和先进的功率模式功能&#xff0c;是世界上最小的加速度传感器&#xff08;1.2 x 0.8 x 0.55 mm&#xff09;。它专为紧凑型设备&#xff08…