ChatGpt大模型入门
环境配置
创建虚拟环境
建议创建一个新的虚拟环境,避免安装依赖冲突,
conda下载:
https://docs.conda.io/en/latest/miniconda.html
conda安装:
https://zhuanlan.zhihu.com/p/591091259
或者使用venv
使用参考:https://vra.github.io/2021/01/03/venv-intro/
其他后续可能需要的依赖:
pip install langchain
pip install tqdm
pip install openai
pip install javascript
pip install chromadb
pip install guardrails-ai
pip insatll jupyter
pytorch
pip install torch torchvision torchaudio
编辑器
编辑器可以随意,不过最好装下jupyter插件,或者直接下载jupyter,jupyter notebook方便调试。
ChatGpt
账户注册网上可以找到,这里就不说了。不过要使用api的话就需要充值,充值需要国外xy卡,可以参考以下链接:
https://savokiss.com/tech/chatgpt-api-open.html
https://savokiss.com/tech/gpt-plus-onekey.html
pay后就可以生成api key:
https://platform.openai.com/account/api-keys
如果注册和充值麻烦,可以直接从银河录像局买现成的:
https://nf.video/
chatgpt
https://chat.openai.com/?model=text-davinci-002-render-sha
openai文档:
https://platform.openai.com/docs/guides/gpt/completions-api中文文档:
https://openai.xiniushu.com/
例子:
import openaiopenai.api_key = "sk-xxx" # 替换为你自己的keycompletion = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Who won the world series in 2020?"},{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},{"role": "user", "content": "Where was it played?"}]
)
print(completion.choices[0].message)
import openaiopenai.api_key = "sk-xxx" # 替换为你自己的keyresponse = openai.Completion.create(model="text-davinci-003",prompt="Write a tagline for an ice cream shop."
)
print(response)
prompt
https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/#instruction-prompting
https://lslfd0slxc.feishu.cn/docx/Nqm9dX81hotVYUxFQuxcVR82n2g
https://www.promptingguide.ai/zh
https://mp.weixin.qq.com/s/MCsFoisMd6pB9wdhlQtd6Q
- 最好先看一遍langchain,学习langchain的一些思路。
- 指定格式输出时,要说明空和非空情况下两种输出格式,不然llm会强行设置一些无用的信息。
例如:{“状态条件”: []},这种格式,会让llm以为必须有内容,即使说明了可以空,也会出问题,替换为{“状态条件”: ""或者[]}会更好。 - 如果指定了格式,llm还是输出一些无关的描述,在规则中添加"不要总结、解释和注释",能够减少无用输出。
- 通过history提醒输出错误,可以让他回顾规则第几点或者参考例子进行修正。作用不大。
- 任务做不好,再拆分可能会有奇效。
- 让llm对prompt进行标准转化,再提问,输出结果和原来提问的进行对比,让llm选择更好的结果,对提问进行标准化转换可能会有奇效。
- 可以将相关文档缓存到向量数据库,可以用提问在数据库里找到相关的内容,一起发送给llm。
- 尽量避免复杂的逻辑。
- 也可以参考guardrails from_rail的格式:
Given below is XML that describes the information to extract from this document and the tags to extract it │
│ into. │
│ │
│ <output> │
│ <list name="tasks"> │
│ <object name="task"> │
│ <string name="type" description="任务类型"/> │
│ <string name="content" description="任务内容"/> │
│ </object> │
│ </list> │
│ <integer name="logic" description="1:与 2:或" format="valid-choices: choices=[1, 2]"/> │
│ </output> │
│ │
│ │
│ ONLY return a valid JSON object (no other text is necessary), where the key of the field in JSON is the `name` │
│ attribute of the corresponding XML, and the value is of the type specified by the corresponding XML's tag. The │
│ JSON MUST conform to the XML format, including any types and format requests e.g. requests for lists, objects │
│ and specific types. Be correct and concise. │
│ │
│ Here are examples of simple (XML, JSON) pairs that show the expected behavior: │
│ - `<string name='foo' format='two-words lower-case' />` => `{'foo': 'example one'}` │
│ - `<list name='bar'><string format='upper-case' /></list>` => `{"bar": ['STRING ONE', 'STRING TWO', etc.]}` │
│ - `<object name='baz'><string name="foo" format="capitalize two-words" /><integer name="index" │
│ format="1-indexed" /></object>` => `{'baz': {'foo': 'Some String', 'index': 1}}` │
│ │
│ │
│ │
│ Json Output:
LangChain,api使用进阶
lainchain地址:
https://github.com/langchain-ai/langchain
langchain文档:
https://python.langchain.com/docs/modules/agents/
中文文档:
https://www.langchain.com.cn/modules/chains/generic/sequential_chains
其他文档:
https://juejin.cn/post/7217759646881742903
agent
https://lilianweng.github.io/posts/2023-06-23-agent/
工具
rail
https://shreyar.github.io/guardrails/rail/
chroma(embedding database)
https://docs.trychroma.com/
大模型应用项目
Voyager,应用在我的世界
https://github.com/MineDojo/Voyager/
https://voyager.minedojo.org/
本地部署大模型
开源的大模型有很多,这里只介绍chatglm6b,链接:
https://github.com/THUDM/ChatGLM2-6B
https://github.com/THUDM/ChatGLM-6B
https://huggingface.co/THUDM/chatglm-6b
https://cloud.tsinghua.edu.cn/d/fb9f16d6dc8f482596c2/?p=%2F&mode=grid
部署教程:
https://zhuanlan.zhihu.com/p/617644321?utm_id=0
微调:
https://github.com/lich99/ChatGLM-finetune-LoRA
https://blog.csdn.net/bmfire/article/details/131064677
https://github.com/THUDM/ChatGLM-6B/tree/main/ptuning
LangChain-ChatGLM
本地部署glm加上langchain
https://github.com/chatchat-space/langchain-ChatGLM
深度学习
https://courses.d2l.ai/zh-v2/
https://space.bilibili.com/1567748478/channel/seriesdetail?sid=358497
https://learn.deeplearning.ai/
相关文章:
ChatGpt大模型入门
环境配置 创建虚拟环境 建议创建一个新的虚拟环境,避免安装依赖冲突, conda下载: https://docs.conda.io/en/latest/miniconda.html conda安装: https://zhuanlan.zhihu.com/p/591091259 或者使用venv 使用参考:http…...
Mac 配置Clion Qt 调试显示变量值
背景 使用Clion开发Qt程序,在进行调试时,会看不到Qt类的变量值,只有指针形式,对于调试很不方便。 环境: Macbook ProCPU:M3Qt 5.15.13CLion 2023.3.4 解决方案 为了让Clion能显示Qt类的值,…...
【Ansys Fluent Web 】全新用户界面支持访问大规模多GPU CFD仿真
基于Web的技术将释放云计算的强大功能,加速CFD仿真,从而减少对硬件资源的依赖。 主要亮点 ✔ 使用Ansys Fluent Web用户界面™(UI),用户可通过任何设备与云端运行的仿真进行远程交互 ✔ 该界面通过利用多GPU和云计算功…...
13.云原生之常用研发中间件部署
云原生专栏大纲 文章目录 mysql主从集群部署mysql高可用集群高可用互为主从架构互为主从架构如何实现主主复制中若是两台master上同时出现写操作可能会出现的问题该架构是否存在问题? heml部署mysql高可用集群 nacos集群部署官网文档部署nacoshelm部署nacos redis集…...
远离远程代码执行 ,RPC 运行时中的三个漏洞是如何被发现的?
引言 MS-RPC 是 Windows 网络中广泛使用的协议,许多服务和应用程序都依赖它。 因此,MS-RPC 中的漏洞可能会导致严重后果。 Akamai 安全情报小组在过去一年中一直致力于 MS-RPC 研究。 我们发现并利用了漏洞,构建了研究工具,并编写…...
零基础学python之高级编程(4)---python异常类型及其类型处理
python异常类型及其类型处理 文章目录 python异常类型及其类型处理前言一、异常的概念二、异常类型1.捕获异常方法2.主动抛出异常 总结 前言 我们在日常学习中或者在开发一个项目时,一定会出现的问题就是报错,今天我们就学习错误类型的种类以及错误类型的处理方法 一、异常的概…...
如何实现三维模型在网页/手机端/APP上的展示与分享?
在四维轻云平台中,只需要简单几步,就能轻松实现三维模型在网页/手机端/APP上的交互展示,也可分享转发给他人进行在线查看。 1、注册登录 打开四维轻云官网,完成注册并登录。 2、创建项目 在【项目管理】中点击“新建项目”按钮…...
SpringBoot项目在进行部署打包的时候,打包成jar和war有何差异?
首先给大家来讲一个我们遇到的一个奇怪的问题: 我的一个springboot项目,用mvn install打包成jar,换一台有jdk的机器就直接可以用java -jar 项目名.jar的方式运行,没任何问题,为什么这里不需要tomcat也可以运行了? 然…...
ARM系列 -- 虚拟化(四)
今天来看看虚拟中断。 在一个非虚拟化的系统中,操作系统可以直接访问GIC的寄存器,并且处理GIC的物理中断接口(physical interrupt interface)。 但是在一个虚拟化的系统中,不是这样。Guest OS并不知道它运行在虚拟系…...
QT GUI编程常用控件学习
1 GUI编程应该学什么 2 QT常用模块结构 QtCore: 包含了核心的非GUI的功能。主要和时间、文件与文件夹、各种数据、流、URLs、mime类文件、进程与线程一起使用 QtGui: 包含了窗口系统、事件处理、2D图像、基本绘画、字体和文字类 QtWidgets: 包含了一些列创建桌面应用的UI元素…...
【Python从入门到进阶】49、当当网Scrapy项目实战(二)
接上篇《48、当当网Scrapy项目实战(一)》 上一篇我们正式开启了一个Scrapy爬虫项目的实战,对当当网进行剖析和抓取。本篇我们继续编写该当当网的项目,讲解刚刚编写的Spider与item之间的关系,以及如何使用itemÿ…...
flutter build ipa 打包比 xcode archive 打出的ipa包大
为什么 flutter build ipa 打包比 xcode archive 打出的ipa包大? 如果你用Flutter构建的.ipa文件比通过Xcode Archive构建的.ipa文件要大,这可能是因为Flutter构建了一个包含了多平台的二进制文件的通用包。这意味着在Flutter构建的.ipa中包含了所有的C…...
B端系统:巧妙地容错和防错设置,减少用户操作错误
Hi,大家好,我是大美B端工场,从事8年前端开发的老司机。很多B端系统体验不好,让用户非常茫然或者容易出错,大大降低了操作体验,本文着重分析B端系统的容错机制该如何设计,欢迎老铁们关注、评论、…...
BIO实战、NIO编程与直接内存、零拷贝深入辨析
BIO实战、NIO编程与直接内存、零拷贝深入辨析 长连接、短连接 长连接 socket连接后不管是否使用都会保持连接状态多用于操作频繁,点对点的通讯,避免频繁socket创建造成资源浪费,比如TCP 短连接 socket连接后发送完数据后就断开早期的http服…...
PDF文件转换为图片
现在确实有很多线上的工具可以把pdf文件转为图片,比如smallpdf等等,都很好用。但我们有时会碰到一些敏感数据,或者要批量去转,那么需要自己写脚本来实现,以下脚本可以提供这个功能~ def pdf2img(pdf_dir, result_path…...
【Java程序设计】【C00317】基于Springboot的智慧社区居家养老健康管理系统(有论文)
基于Springboot的智慧社区居家养老健康管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的智慧社区居家养老健康管理系统设计与实现,本系统有管理员、社区工作人员、医生以及家属四种角色权限 管…...
Vue3前端实现一个本地消息队列(MQ), 让消息延迟消费或者做缓存
MQ功能实现的具体代码(TsMQ.ts): import { v4 as uuidx } from uuid;import emitter from /utils/mitt// 消息类 class Message {// 过期时间,0表示马上就消费exp: number;// 消费标识,避免重复消费tag : string;// 消息体body : any;constr…...
普中51单片机学习(8*8LED点阵)
8*8LED点阵 实验代码 #include "reg52.h" #include "intrins.h"typedef unsigned int u16; typedef unsigned char u8; u8 lednum0x80;sbit SHCPP3^6; sbit SERP3^4; sbit STCPP3^5;void HC595SENDBYTE(u8 dat) {u8 a;SHCP1;STCP1;for(a0;a<8;a){SERd…...
Python 实现Excel自动化办公(上)
在Python 中你要针对某个对象进行操作,是需要安装与其对应的第三方库的,这里对于Excel 也不例外,它也有对应的第三方库,即xlrd 库。 什么是xlrd库 Python 操作Excel 主要用到xlrd和xlwt这两个库,即xlrd是读Excel &am…...
DayDreamInGIS 之 ArcGIS Pro二次开发 图层属性中换行符等特殊字符替换
具体参考ArcMap中类似的问题,本帖开发一个ArcGISPro版的工具 1.基础库部分 插件开发,经常需要处理图层与界面的交互。基础库把常用的交互部分做了封装,方便之后的重复使用。 (1)下述类定义了数据存储结构࿰…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
