LLM能力与应用全解析

news2024/11/18 9:40:44

一、简介

经过几年时间的发展,大语言模型(LLM)已经从新兴技术发展为主流技术。而以大模型为核心技术的产品将迎来全新迭代。大模型除了聊天机器人应用外,能否在其他领域产生应用价值?在回答这个问题前,需要弄清大模型的核心能力在哪?与这些核心能力关联的应用有哪些?

本文将重点关注以下三个方面:

1、LLM能力解析 2、LLM技术分析 3、LLM案例实践

二、LLM能力解析

 

LLM的核心能力大致分为:生成(Generate)、总结(Summarize)、提取(Extract)、分类(Classify)、检索(Search)与改写(Rewrite)六部分。 

1、生成(Generate)

生成是LLM最核心的能力。当谈论到LLM时,首先可能想到的是其能够生成原始且连贯的文本内容。其能力的建立来源于对大量的文本进行训练,并捕捉了语言的内在联系与人类的使用模式。充分利用模型的生成能力可以完成对话式(chat)&生成式(completion)应用。对于对话式应用,典型应用为聊天机器人,用户输入问题,llm对问题进行响应回答。对于生成式应用,典型应用为文章续写、摘要生成。比如,我们在写一段营销文案时,我们写一部分上下文,LLM可以在此基础上对文案进行续写,直至完成整个段落或整片文章。

【应用】:聊天助手、写作助手、知识问答助手。

2、总结(Summarize)

总结是LLM的重要能力。通过Prompt Engineering,LLM可对用户输入的文本提炼总结。在工作中我们每天会处理大量会议、报告、文章、邮件等文本内容,LLM总结能力有助于快速获取关键信息,提升工作效率。利用其总结提炼能力可以产生许多有价值应用。比如,每次参加线上或线下会议,会后需形成会议记录,并总结会议重要观点与执行计划。LLM利用完备的语音记录可完成会议内容与重要观点的总结。

【应用】:在线视频会议、电话会议内容总结;私有化知识库文档总结;报告、文章、邮件等工作性文本总结。

3、提取(Extract)

文本提取是通过LLM提取文本中的关键信息。比如命名实体提取,利用LLM提取文本中的时间、地点、人物等信息,旨在将文本关键信息进行结构化表示。除此之外,还可用于提取摘录合同、法律条款中的关键信息。

【应用】:文档命名实体提取、文章关键词提取、视频标签生成。

4、分类(Classify)

分类旨在通过LLM对文本类别划分。大模型对文本内容分类的优势在于强语义理解能力与小样本学习能力。也就是说其不需要样本或需要少量样本学习即可具备强文本分类能力。而这与通过大量语料训练的垂域模型相比,在开发成本与性能上更具优势。比如,互联网社交媒体每天产生大量文本数据,商家通过分析文本数据评估对于公众对于产品的反馈,政府通过分析平台数据评估公众对于政策、事件的态度。

【应用】:网络平台敏感内容审核,社交媒体评论情感分析,电商平台用户评价分类。

5、检索(Search)

文本检索是根据给定文本在目标文档中检索出相似文本。最常用的是搜索引擎,我们希望搜索引擎根据输入返回高度相关的内容或链接。而传统方式采用关键词匹配,只有全部或部分关键词在检索文档中命中返回目标文档。这对于检索质量是不利的,原因是对于关键词未匹配但语义高度相关的内容没有召回。在检索应用中,LLM的优势在于能够实现语义级别匹配。

【应用】:文本语义检索、图片语义检索、视频语义检索;电商产品语义检索;招聘简历语义检索。

6、改写(Rewrite)

文本改写是通过LLM对输入文本按照要求进行润色、纠错常见的应用为文本纠错,例如,在稿件撰写、编辑时可能出现词语拼写错误、句子语法错误,利用通过LLM与提示词工程(Prompt Engineering)自动对文本内容纠错。此外,还可用其对文章进行润色处理,使文章在表述上更加清晰流畅。同时,可以还可LLM进行文本翻译。

【应用】:文本纠错、文本润色、文本翻译。

三、LLM技术解析

以上列举了LLM的核心能力以及关联应用,这些应用在技术上如何实现?

1、生成(Generate)

文本生成是给定输入与上下文生成新文本。下面通过简单的例子说明:

import os
from langchain.llms import OpenAI
# 输入openai_api_key
openai_api_key = 'sk-D8rnXN4lDiYE2jyR6Cxxx3BlbkexywbgjUt5vegEeNpz8MF'
os.environ['OPENAI_API_KEY'] = openai_api_key
llm = OpenAI(temperature=0.9)
# 输入
text = "今天是个好天气,"
# 输出
print(llm(text))

输出:

很适合出门散步或者做一些活动。我们可以去公园、湖边或者有趣的地方游玩,享受美丽的自然风景。也可以去户外健身,锻炼身体。亦可以在室内做一些有趣的活动,比如看书、看电影或与朋友共度美好的时光。

以上例子使用的是openAI的gpt-3.5-turbo大语言模型文本生成示例。对于本地化的部署可以替换为chatglm-6b等开源模型。此外,利用prompts可指导LLM完成特定任务,如下文中的总结、分类、提取、改写等任务。

2、总结(Summarize)

如上图,在prompt中增加“总结”提示可指导LLM完成文本总结任务。下面通过简单的例子说明:

import os
from langchain.llms import OpenAI
from langchain import PromptTemplate

# 输入openai_api_key
openai_api_key = 'sk-D8rnXN4lDiYE2jyR6xxxx3BlbkexywbgjUt5vegEeNpz8MF'
os.environ['OPENAI_API_KEY'] = openai_api_key

llm = OpenAI(temperature=0, model_name='gpt-3.5-turbo', openai_api_key=openai_api_key)

template = """
请对以下文本进行总结,以一个5岁孩子能听懂的方式进行回答.
{text}
"""
prompt = PromptTemplate(
    input_variables=["text"],
    template=template,
)
# 输入文本
text = """
ChatGPT是美国人工智能研究实验室OpenAI新推出的一种人工智能技术驱动的自然语言处理工具,使用了Transformer神经网络架构,也是GPT-3.5架构,这是一种用于处理序列数据的模型,拥有语言理解和文本生成能力,尤其是它会通过连接大量的语料库来训练模型,这些语料库包含了真实世界中的对话,使得ChatGPT具备上知天文下知地理,还能根据聊天的上下文进行互动的能力,做到与真正人类几乎无异的聊天场景进行交流。ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。
"""
prompt_format = prompt.format(text=text)
output = llm(prompt_format)
print(output)

 输出:

ChatGPT是一种很聪明的机器人,它可以帮助我们处理文字和语言。它学习了很多对话和文字,所以它知道很多东西。它可以和我们聊天,回答我们的问题,还可以帮我们写邮件、视频脚本、文案、翻译和代码。它就像一个真正的人一样,可以和我们进行交流。

在以上例子中,增加了prompt从而对总结任务进行了描述:“请对以下文本进行总结,以一个5岁孩子能听懂的方式进行回答。”LLM按照要求对文本内容进行了总结。为了提高总结内容的一致性,将温度参数值调低,上述代码设置为0,每次均会输出相同回答。

3、分类(Classify) 

文本分类是自然语言处理中最常见的应用。与小模型相比,大模型在开发周期、模型性能更具优势,该内容会在案例分析中详细说明。下面通过简单的例子说明LLM在情感分类中的应用。 

import os
from langchain.llms import OpenAI
from langchain import PromptTemplate

# 输入openai_api_key
openai_api_key = 'sk-D8rnXN4lDiYE2jyR6xxxx3BlbkexywbgjUt5vegEeNpz8MF'
os.environ['OPENAI_API_KEY'] = openai_api_key

llm = OpenAI(temperature=0, model_name='gpt-3.5-turbo', openai_api_key=openai_api_key)

template = """
请完成情感分类任务,给定一个句子,从['negative','positive']中分配一个标签,只返回标签不要返回其他任何文本.

Sentence: 这真是太有趣了.
Label:positive
Sentence: 这件衣服的材质有点差.
Label:negative

{text}
Label:
"""

prompt = PromptTemplate(
    input_variables=["text"],
    template=template,
)
# 输入
text = """
他刚才说了一堆废话.
"""
prompt_format = prompt.format(text=text)
output = llm(prompt_format)
print(output)

 输出:

negative

在以上的例子中,增加了prompt对分类任务进行了描述:“请完成情感分类任务,给定一个句子,从['negative','positive']中分配一个标签,只返回标签不要返回其他任何文本.”同时,给出了examples,利用llm的in-context learning对模型进行微调。该方式较为重要,有研究表明经过in-context learning微调后的模型在分类任务上性能提升明显。

4、提取(Extract) 

提取文本信息是NLP中常见需求。LLM有时可以提取比传统NLP方法更难提取的实体。上图为LLM Extract示意图,LLM结合prompt对Input text中关键词进行提取。下面通过简单的例子说明LLM在关键信息提取中的应用。

import os
from langchain.llms import OpenAI
from langchain import PromptTemplate

openai_api_key = 'sk-D8rnXN4lDiYE2jyR6xxxx3BlbkexywbgjUt5vegEeNpz8MF'
os.environ['OPENAI_API_KEY'] = openai_api_key

llm = OpenAI(temperature=0, model_name='gpt-3.5-turbo', openai_api_key=openai_api_key)

template = """
请完成关键词提取任务,给定一个句子,从中提取水果名称,如果文中没有水果请回答“文中没有提到水果”.不要回答其他无关内容.

Sentence: 在果摊上,摆放着各式水果.成熟的苹果,香甜的香蕉,翠绿的葡萄,以及紫色的蓝莓.
fruit names: 苹果,香蕉,葡萄,蓝莓

{text}
fruit names:
"""

prompt = PromptTemplate(
    input_variables=["text"],
    template=template,
)

text = """
草莓、蓝莓、香蕉和橙子等水果富含丰富的营养素,包括维生素、纤维和抗氧化剂,对于维持健康和预防疾病有重要作用。
"""

prompt_format = prompt.format(text=text)
output = llm(prompt_format)
print(output)

 输出:

草莓, 蓝莓, 香蕉, 橙子

在以上的例子中,增加了prompt要求LLM能够输出给定文本中的“水果名称”。利用example与in-context learning,LLM能够提取文中关键信息。

5、检索(Search)

  • embedding:对文本进行编码。如上图,将每个text进行向量化表示。
# 加载pdf文档数据
loader = PyPDFLoader("data/ZT91.pdf")
doc = loader.load()
# 数据划分
text_splitter = RecursiveCharacterTextSplitter(chunk_size=3000, chunk_overlap=400)
docs = text_splitter.split_documents(doc)
# 文本embedding
embeddings = OpenAIEmbeddings(openai_api_key=openai_api_key)
docsearch = FAISS.from_documents(docs, embeddings)

similarity:输入文本与底库文本相似性度量检索。如上图中的query embedding search。 

retriever=docsearch.as_retriever(search_kwargs={"k": 5})

 summarize:对检索出的文本进行总结。并得到上图中的search results。

qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=docsearch.as_retriever(search_kwargs={"k": 5}),
                                 chain_type_kwargs={"prompt": PROMPT})

print("answer:\n{}".format(qa.run(input)))

 LLM语义检索可弥补传统关键词匹配检索不足,在本地知识库与搜索引擎中的语义搜文、以文搜图中存在应用价值。

6、改写(Rewrite)

改写的主要应用为文本纠错与文本润色。通过prompt指导LLM完成改写任务。下面通过简单的例子进行说明:

import os
from langchain.llms import OpenAI
from langchain import PromptTemplate

openai_api_key = 'sk-D8rnXN4lDiYE2jxxxYiT3BlbkFJyEwbgjUt5vegEeNpz8MF'
os.environ['OPENAI_API_KEY'] = openai_api_key

llm = OpenAI(temperature=0, model_name='gpt-3.5-turbo', openai_api_key=openai_api_key)


template = """
请完成文本纠错的任务,给定一段文本,对文本中的错别字或语法错误进行修改,并返回正确的版本,如果文本中没有错误,什么也不要返回.

text: 黄昏,一缕轻烟从烟囱里请缨地飘出来,地面还特么的留有一丝余热,如果说正午像精力允沛的青年,那黄昏就像幽雅的少女,清爽的风中略贷一丝暖意。
correct: 黄昏,一缕轻烟从烟囱里轻轻地飘出来,地面还留有一丝余热,如果说正午像精力充沛的青年,那黄昏就像优雅的少女,清爽的风中略带一丝暖意。
text: 胎头望着天空,只见红彤彤的晚霞己经染红大半片天空了,形状更是千资百态。
correct: 抬头望着天空,只见红彤彤的晚霞己经染红大半片天空了,形状更是千姿百态。

{text}
correct:
"""

prompt = PromptTemplate(
    input_variables=["text"],
    template=template,
)

text = """
孔雀开平是由一大盆菊花安照要求改造而成,它昂首廷胸翩翩起舞。
"""
prompt_format = prompt.format(text=text)
output = llm(prompt_format)
print(output)

 输出

孔雀开屏是由一大盆菊花按照要求改造而成,它昂首挺胸翩翩起舞。

以上为采用gpt-3.5-turbo进行文本纠错。给出了prompt描述与example。以上例子可以发现,llm能够发现文本中错误,并将错误内容修改。

四、LLM案例分析

需求描述:在社交媒体、电商平台、网络直播中每天产生大量文本内容。而这些文本内容中蕴含价值同时可能包含不良信息。比如,商家可以通过分析媒体数据来评估公众对于产品的反馈。再比如,相关机构可通过分析平台数据来了解公众对政策、事件的态度。除此之外,社交网络平台中可能掺杂不良信息、违法言论等网络安全问题。

如何对网络内容进行细粒度情感分析与内容审核

自2023年以来,以chatgpt为代表的大模型在全球范围内持续火热,原因是模型参数量的上升使其语义理解与文本生成能力得到了“涌现”。大模型是否可应用于情感分析与内容审核?

任务描述:情感分析是分析文本中蕴含的情感态度,一般分为积极(positive)/消极(negative)/中性(neutral),从分析维度上可划分为段落、句子以及方面三个级别。内容审核是分析文本中是否存在违规、违法不良言论。两者任务均为文本分类。

1、情感分析 

如上图为cohere情感分类产品设计,用户通过上传用于in-context learning的example可指导LLM调整模型。即在让LLM完成分析任务前,需要先为其打个样。让其按照example的样子完成任务。同时,可在Input中对example进行测试。

2、内容审核 

 

不同形式的内容源经转换器转换为文本形式。经LLM Engine完成语义内容审核。

 

以上为通过LLM对网络语言的测试结果,经过in-context learning,LLM具备语义审核能力。在prompt中每个class仅加入了两个example,如上图的简单测试在8个测试样本中正确命中6个。其能力通过进一步的example扩充有望继续提升。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1264380.html

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

相关文章

澳大利亚访问学者子女入学政策-附实例体会

很多访问学者出国交流时,希望子女携签,一起到异国体验不同的生活方式,拓宽视野,增加认知。如果能免费入读当地的公立中小学,还可以获得自然习得英语的机会。那么澳大利亚的访问学者能否达到这一目的?需要准…

TiDB 7.x 源码编译之 TiDB Server 篇,及新特性详解

本文将介绍如何编译 TiDB Server 源码。以及阐释 TiDB Server 7.x 的部分新特性。 TiDB v7.5.0 LTS 计划于 2023 年 11 月正式 Release,目前代码虽未冻结,但已经可以看到 Alpha 版本的 Code 了,本文代码将以 v7.5.0-alpha 为基准。 TiDB Se…

【substance painter】如何制作一个生锈磨损的枪

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

智能优化算法应用:基于花授粉算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于花授粉算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于花授粉算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.花授粉算法4.实验参数设定5.算法结果6.参考文献7.…

C++ string类(二)

insert&#xff1a; erase&#xff1a; 常见用法&#xff1a; int main() {string s1("hello world");string s2("gm");s1.insert(5,"x");cout << s1 << endl;s1.insert(6,s1,0);cout << s1 << endl;s1.insert(0,&qu…

conda环境下 ERROR: CMake must be installed to build dlib问题解决

1 问题描述 pip install -r requirements.txt 在构建video_retalking项目过程中&#xff0c;使用命令安装依赖包时&#xff0c;出现如下错误&#xff1a; Building wheels for collected packages: face-alignment, dlib, ffmpy, futureBuilding wheel for face-alignment …

Unity中Shader的BRDF解析(三)

文章目录 前言一、BRDF中的镜面反射项二、分别解析每一个参数1、D、G函数&#xff1a;speclarTerm2、其他中间步骤3、光照颜色4、F函数&#xff08;菲涅尔函数&#xff09; &#xff1a;FresnelTermIBL在下篇文章中继续解析 三、最终代码.cginc文件:Shader文件&#xff1a; 前言…

ASCII值对照表

ASCII码是一种7位编码&#xff0c;但它存放时必须占全1个字节&#xff0c;也即占用8位&#xff0c;最高位为0&#xff0c;其余7位表示ASCII码。 ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符包括所有的大写和小写字母&#xff0c;数字0 到9、标点符…

富富集网络图绘制教程

本期教程 前言 今天学习aPEAR包&#xff0c;绘制KEGG和GO功能富集网络图&#xff0c;用起来还是比较方便的&#xff0c;直接将clusterProfiler富集结果进行绘制&#xff0c;对人类、动物等分析结果非常方便。对于模式植物&#xff0c;使用自己制作的GO或KEGG背景文件进行富集分…

5款最常用的Android测试框架(含代码示例)

前言 今天&#xff0c;我们就要说说5款最常用的Android测试框架&#xff0c;并且每个框架都给出了基本的代码示例。 在这我为大家准备了一份软件测试视频教程&#xff08;含面试、接口、自动化、性能测试等&#xff09;&#xff0c;就在下方&#xff0c;需要的可以直接去观看…

Django二转Day02

http #1 http 是什么#2 http特点#3 请求协议详情 -请求首行---》请求方式&#xff0c;请求地址&#xff0c;请求协议版本 -请求头---》key:value形式 -referer&#xff1a;上一次访问的地址 -user-agenet&#xff1a;客户端类型 -name&#x…

Python编程控制Android手机操作技巧示例代码

文章目录 你应该拥有的东西截图TemplateMatching 滑动打电话给某人手机录屏打开手机发送 Whatsapp 消息关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游…

HttpRunner原来还能这么用,大开眼界!!!

hook机制 Httprunner 框架中的 hook 机制相当于unittest框架中的 setup , teardown 函数&#xff0c;用来进行测试用例执行之前的环境初始化以及测试用例执行完毕之后的环境清理操作。 httprunner 中的 hooks 机制可以用在测试用例层级也可以用在测试步骤层级&#xff0c;其关键…

【UE】绘制抛物线并投射物体

效果 步骤 1. 先新建父类为Actor的蓝图&#xff0c;这里命名为“BP_发射物” 打开“BP_发射物”&#xff0c;添加一个球形的静态网格体和一个发射物移动组件 2. 新建一个父类为角色的蓝图&#xff0c;这里命名为“BP_绘制抛物线” 打开“BP_绘制抛物线” 我们希望可以通过控制…

距离向量路由协议——IGRP和EIGRP

IGRP-内部网关路由协议 IGRP&#xff08;Interior Gateway Routing Protocol&#xff0c;内部网关路由协议&#xff09;是一种动态距离向量路由协议&#xff0c;它是Cisco公司在20世纪80年代中期设计的&#xff0c;是Cisco专用路由协议。目前在Cisco高版本的IOS已经对IGRP不提…

掌握 Node.js 事件循环,让代码更高效

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

socket 一个完整的不错的示例

从客户端向服务器端发送信息时&#xff0c;在服务器端有打印显示&#xff1b; 检测环境常用&#xff0c;备份一下 0&#xff0c;公共头文件代码 //config.h#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #inc…

Android中的多进程

在Android中也可以像pc一样开启多进程&#xff0c;这在android的编程中通常是比较少见的&#xff0c;以为在一个app基本上都是单进程工作就已经足够了&#xff0c;有一些特殊的场景&#xff0c;我们需要用多进程来做一些额外的工作&#xff0c;比如下载工作等。 在Android的An…

UI上传组件异步上传更改为同步

实现异步方法 JavaScript 异步 实现异步的五种实现方法_js异步-CSDN博客 这两种比较经常用。 因为上传组件是异步上传的通过Async和await配合使用可以上传完照片视频后返回的地址在继续走下去&#xff0c;而不是图片视频地址还未获取时就上传后端了。

leetcode算法之字符串

目录 1.最长公共前缀2.最长回文子串3.二进制求和4.字符串相乘 1.最长公共前缀 最长公共前缀 class Solution { public:string longestCommonPrefix(vector<string>& strs) {//法一&#xff1a;两两比较string ret strs[0];for(int i1;i<strs.size();i){ret f…