AI大语言模型LLM学习-入门篇
概念解释
LLM
英文是Large Language Model,即大语言模型。
Prompt
提示词
Vector Database
向量数据库
Embedding
一种将高维离散数据映射到低维连续向量空间的技术。这个过程通过生成嵌入向量来实现,这些向量在低维空间中表示原始数据的语义或特征信息。
RAG
RAG是英文Retrieval Augmented Generation的缩写,即检索增强生成。
RAG把一个信息检索插件和大模型结合在一起,根据用户的提示词,通过信息检索插件检索相关的文档,再将文档连同用户原始输入作为提示词输入到大模型,从而产生更优的结果。
其中,RAG的信息检索插件可以是从互联网搜索引擎获取数据,也可以是从本地的向量数据库甚至关系数据库中检索数据。
Agent
Agent的中文翻译是代理,在国内的AI领域,习惯称之为智能体。
Agent,可以理解为一个能够自主规划决策、综合运用多种工具以完成复杂任务的系统。在这个系统中,大语言模型充当着‘核心调度器’的角色。这个调度器负责解读用户的自然语言输入,规划出一连串可执行的动作,然后依托记忆模块等其他组件和外部工具,逐步完成这些任务。
AI大模型应用目标的选择
一、搭建私有领域的大模型服务
这要求拥有性价较好的GPU显卡,建议尝试使用ollama,省心又省力。
https://ollama.com/
二、搭建问答型知识库及各类智能体
出于这一目的,如果不需要特别的网络限制,可以购买或者免费使用各大AI平台的API接口实现,当然使用私有的大模型API也是很好的选择。
以下是几大AI平台的模型服务,大家可以按需购买自己希望的API服务,当然对于我这个free主义者来说,免费的才是最好的。
1、通义千问(阿里系)
2、文心一言(百度系)
代码走起
本示例中注册了通义千问的API服务,使用限时免费的API接口。
- 依赖安装
pip install langchain_openai
- 一个简单的问答代码
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
api_key = "api_key(平台注册获得)"
llm = ChatOpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
api_key=api_key,
model="qwen2-1.5b-instruct",
)
prompt_template = ChatPromptTemplate.from_messages([
("system", "你是一个很出色的交通警察."),
("user", "{input}")
])
#使用|操作符将prompt_template和llm连接在一起,创建一个chain对象。
chain =prompt_template | llm
#使用invoke方法调用chain对象,传入用户的输入,并获取响应。
response = chain.invoke(input="请你给违反交通规则的小朋友讲解危害!")
print(response.content)
- 运行效果
当然,你可以尝试修改提示词的内容,同时为了连续测试,笔者做了如下调整
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
api_key = "api_key(平台注册获得)"
llm = ChatOpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
api_key=api_key,
model="qwen2-1.5b-instruct",
)
prompt_template = ChatPromptTemplate.from_messages([
("system", "你是一个很出色的历史老师,给我讲讲历史人物的故事吧。"),
("user", "{input}")
])
#使用|操作符将prompt_template和llm连接在一起,创建一个chain对象。
chain =prompt_template | llm
#使用invoke方法调用chain对象,传入用户的输入,并获取响应。
while True:
question = input("请输入你需要了解的历史人物,按q退出:")
if question == "q":
break
else:
response = chain.invoke(input=question)
print(response.content)
再次运行代码获得效果: