1、认识LLM应用开发
1.1 LLM
大语言模型(英语:Large Language Model,简称LLM)是指使用大量文本数据训练的深度学习模型,使得该模型可以生成自然语言文本或理解语言文本的含义。这些模型可以通过在庞大的数据集上进行训练来提供有关各种主题的深入知识和语言生产。其核心思想是通过大规模的无监督训练学习自然语言的模式和结构,在一定程度上模拟人类的语言认知和生成过程。
与传统的NLP相比,LLM在理解和生成自然文本方面表现更加出色,同时展现出强大的逻辑思维和推理能力。
1.1.1 分类
1、根据是否开源
- 闭源:亦称专有大预言模型,以API接口的形式对外提供服务,如OpenAI、Anthropic、文心一言。费用昂贵。
- 开源:开放模型权重的预训练模型,如BLOOM、Alpaca、通义千问、ChatGLM、Llama、Vicuna。
2、根据是否经过指令微调
- 基座:基础大语言模型(Base LLM):可以回答基础问题,面对复杂的问题可能会出错。
- 精调:指令调整大语言模型(Instruction Tuned LLM):采用人类反馈的强化学习-RLHF。
3、根据返回消息的类型
- 基础模型:文本字符串输入并返回字符串
- 聊天模型:输入输出均为聊天消息列表
1.1.2 发展历程
- 1956-达特茅斯会议
- 1989-Stallman提出通用许可证协议
- 2000-LSTM
- 2017-Transformer
- 2018-GPT
- 2020-GPT-3
- 2021-T5
- 2022-ChatGPT
- ...
1.1.3 应用
- 机器翻译
- 语音识别与生成
- 自然语言推理
- 聊天机器人与虚拟助手
- 智能客服
- 信息检索与推荐
- 教育培训
- 游戏与娱乐
- 内容生成
1.1.4 面临挑战
- Token数量限制
- 实时更新问题
- 缺乏对外部世界的感知
- 短期记忆问题
- 多任务处理能力不足
- 数据偏差问题
- 长期依赖问题
- 泛化能力问题
- 可解释性问题
- 缺乏创新和想象力
- 安全、隐私和社会问题
- 法律和道德问题
1.2 LLM应用开发
1.2.1 LLM应用开发前景
- 创新应用:智能客服、内容生成、自然语言理解
- 行业解决方案:金融、医疗、教育
- 个性化定制:内容推荐
- 模型优化与迭代:
- 跨领域跨行业合作
1.2.2 LLM应用开发的技术方向
- 模型调优:参数微调、模型结构的优化、训练方法的改进
- 数据增强:
- 分布式训练
- 模型压缩:减枝、量化
- 指令工程
- API集成
1.3 LangChain
LangChain 是一个帮助在应用程序中使用大型语言模型(LLM)的编程框架。
2022年10月,作为一款 Python 工具。
2023年2月,增加了对 TypeScript 的支持。
2023年4月,支持多种 JavaScript 环境,包括 Node.js、浏览器、Cloudflare Workers、Vercel/Next.js、Deno 和 Supabase Edge Functions。
LangChain以外的开发框架
2、搭建环境并实现简单的应用
2.1 环境搭建
1、搭建Python开发环境:使用Anaconda搭建Python开发环境。
2、安装langchain
python
pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple langchain
pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple langchain-core
pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple langchain-community
查看版本
python
import langchain
print(langchain.__version__)
3、搭建LLM环境
采用本地搭建LLM环境的方式。
具体步骤如下
Ollama官网下载
根据自己的机型进行下载
在终端输入命令
python
ollama run qwen:1.8b
python
ollama run qwen2.5:0.5b
2.2 问答应用-基于基础模型
python
#导入包
from langchain_community.llms import Ollama
#配置模型信息
llm = Ollama(model="qwen:1.8b")
#调用模型的生成功能并输出返回信息
print(llm.invoke("AI会对人类文明产生深远的影响吗"))
python
#导入包
from langchain_community.llms import Ollama
#配置模型信息
llm = Ollama(model="qwen2.5:0.5b")
#调用模型的生成功能并输出返回信息
print(llm.invoke("AI会对人类文明产生深远的影响吗"))
2.3 翻译应用-基于聊天模型和指令模板
python
from langchain_community.llms import Ollama
from langchain_community.chat_models import ChatOllama
from langchain.prompts.chat import ChatPromptTemplate,SystemMessagePromptTemplate,HumanMessagePromptTemplate
# ChatPromptTemplate 构建聊天指令模板的基类
# SystemMessagePromptTemplate 构建系统消息指令模板的类
# HumanMessagePromptTemplate 构建人类消息指令模板的类
chat = ChatOllama(model="qwen2.5:0.5b")
#template设置翻译任务的基本指令
template = "你是一个翻译助理,请将用户输入的内容由{input_language}直接翻译为{output_language}."
#system_message_prompt 基于template创建系统消息指令,向聊天模型明确翻译任务要求
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
#human_template:简单定义人类消息指令模板,仅仅包含翻译文本{text}
human_template = "{text}"
#human_message_prompt 定义人类消息指令。
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
#ChatPromptTemplate.from_messages()将系统消息指令和人类消息指令组合为完整的聊天指令,用于与聊天模型交互
chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt,human_message_prompt])
#format_prompt() 填充模板变量
#to_messages() 将格式化后的指令转换为适合聊天模型接收的消息格式
#chat.invoke() 将消息提交给聊天模型,获取翻译结果
print(chat.invoke(chat_prompt.format_prompt(input_language="中文",output_language="日语",
text="北京欢迎你!").to_messages()))