网络营销组织的概念,南宁seo主管,房子装修风格大全2021新款,四川招标采购信息网官网文章目录 一、Prompt Engineering#xff08;怎么去提问大模型#xff09;1#xff09;环境准备2#xff09;交互代码的参数备注3#xff09;交互代码 二、LangChain#xff08;一个框架去使用大模型#xff09;1#xff09;LangChain核心介绍#xff1a;I/O模块、数据… 文章目录 一、Prompt Engineering怎么去提问大模型1环境准备2交互代码的参数备注3交互代码 二、LangChain一个框架去使用大模型1LangChain核心介绍I/O模块、数据链接模块、记忆模块2I/O模块Prompts、Language models、Output parsers3数据链接模块Data connection4记忆模块针对多轮对话强相关这种大模型有个特点都是话痨 三、Fine-tuning如果在自己领域中改变大模型1from scratch从头训练2finetune微调/接着别人的训练1全参数 fine tune2小参数fine tune3小参数的LoRA原理解析4训练大模型 一、Prompt Engineering怎么去提问大模型
1环境准备
①安装OpenAI库
pip install --upgrade openai附加 安装来源
python setup.py install②生成API key ③设定本地的环境变量 ④代码的准备工作
⑤在代码运用prompt简单提问和返回
2交互代码的参数备注
temperature随机性从0到2可以调节回答天马行空变化大可以选2 model跟什么类型的model互动 role定义交互中的角色 ①user交互中的我 ②assistant交互中的model ③system交互中的大环境需要预先设定。比如告诉模型你是一个AI专家在接下来的互动中回答尽量用专业术语
3交互代码
单论交互代码
import openai
import os#从.env文件中读取 key-value键值对并将其设置为环境变量
from dotenv import load_dotenv,find_dotenv
_ load_dotenv(find_dotenv())#获取OPENAI_API_KEY对应键值对数据
openai.api_key os.getenv(OPENAI_API_KEY)def getResponse(prompt,modelgpt-3.5-turbo-16k-0613):messages [{role:user,content:prompt}] #只有单论对话response openai.ChatCompletion.create(model model,messages messages,temperature 0, #对应随机性0随机性最小)def example():instruction 帮我生成一个课程的大概框架主题是prompt的框架150字之内prompt f{instruction}response getResponse(prompt)print(response)return response.choices[0].messages[content]
二、LangChain一个框架去使用大模型
介绍 通过输入自己的知识库来定制化自己的大语言模型
1LangChain核心介绍I/O模块、数据链接模块、记忆模块 备注 这篇文章主讲I/O模块、数据链路模块、记忆模块时间关系讲的少 模块主题可以完整拆分为6部分 ①I/O模块 ②数据链路模块 ③记忆模块 ④链Chain模块 ⑤智能体Agent模块 ⑥Callbacks
2I/O模块Prompts、Language models、Output parsers
①Prompts主要管理/协助构送入model的输入 ②Language models用哪种model 1LLM普通的model大语言模型
from langchain.llms import OpenAI
llm OpenAI() #默认是text-davinci-003 模型
print(llm.predict(Hello, ))2chat_models对话式model
from langchain.chat_models import ChatOpenAI
chat_model ChatOpenAI() #默认是gpt-3.5-turbo
print(chat_model.predict(Hello, ))③Output parsers解析输出结果 3数据链接模块Data connection
整体流程图 流程解释
①source数据源 ②load加载器 这里介绍一个文件加载器 Document loaders,能加载CSV\HTML\JASON\Markdown\PDF
from langchain.document_loaders import PyPDFLoader
loader PyPDFLoader(WhatisChatGPT.pdf)
pages loader.load_and_split()print(pages[0].page_content) ③Transfrom 数据转换也就是对数据的预处理 1splitters将数据按照要求切开成数据块如按text按character 2translate将数据翻译
translator DoctraTextTranslator(openai_api_model gpt-3.5-turbo,languagechinese) # 定义translate
translated_document await translator.atransform_documents(pages) # 使用translate
print(translated_document[0],page_content)④embed操作 这里的translate就是将人类语言的数据转成模型认识的特征feature所谓特征在数学上就是一组张量也就是一组数字 ⑤store储存和retirve 看哪个数据最合适比对之后从store的地方拿出来
向量和向量之间如何比对 1常用的方式余弦举例看向量之间的夹角越小越进 2最直接欧式距离看坐标点距离
# 1)存储
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import FAISS# 2)embedding
embeddings OpenAIEmbeddings()
db FAISS.from_documents(paragraphs,embeddings)# 3)比对
query What can ChatGPT do?
docs db.similarity_search(query)
print(docs[0].page_content)4记忆模块针对多轮对话强相关这种大模型有个特点都是话痨
①基本原理构造 从之前的提问数据写回去再提问的时候丢给Prompt这里回答的内容是你也好啊和你又好啊
from langchain.memory import ConversationBufferMemoryhistory ConversationBufferMemory()
history.save_context({input:你好啊},{output:你也好啊}) #保存字符串
# 打印保存的字符串
print(history.load_memory_variables({}))history.save_context({input:你再好啊},{output:你又也好啊}) #保存字符串
# 打印保存的字符串
print(history.load_memory_variables({}))②如果上下文太长怎么办(给定特定参数)
from langchain.memory import ConversationBufferWindowMemorywindow ConversationBufferWindowMemory(k2) #k值参数决定保留多长参数
window.save_context()③或是自动对历史信息取最摘要ConversationSummaryMemory
三、Fine-tuning如果在自己领域中改变大模型
训练成本 可以看到LLaMA这个模型训练一轮需要21天没个几百万不行包括存储数据的成本
1from scratch从头训练
2finetune微调/接着别人的训练
1全参数 fine tune
备注 全部参数都参与调试
2小参数fine tune
备注 小部分参数加入调试举例 ①Adapter ②prompt tuning ③LoRA 3小参数的LoRA原理解析
原始模型量Rdxd比如 4096x406这个是LLaMA的真实参数量神经网络的d乘d阶乘 Efficient模型量R(dxr)比如 r8这个是真实实验数值 代码库 代码 参数解释
4训练大模型
创建训练器trainer
提供训练数据 ①context我说了啥 ②target我期待模型返回给我什么