前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【AI 大模型】提示工程 ④ ( 自然语言处理 NLG | 自然语言理解 NLU | 自然语言生成 NLG | 使用 提示词 + 大模型 实现 NLU | 使用 提示词 + 大模型 实现 NLG )

【AI 大模型】提示工程 ④ ( 自然语言处理 NLG | 自然语言理解 NLU | 自然语言生成 NLG | 使用 提示词 + 大模型 实现 NLU | 使用 提示词 + 大模型 实现 NLG )

作者头像
韩曙亮
发布2024-07-14 08:25:32
1060
发布2024-07-14 08:25:32
举报
文章被收录于专栏:韩曙亮的移动开发专栏

一、自然语言处理 NLP


自然语言处理 ( NLP , Natural Language Processing ) , 指的是 " 人工智能 “ " 理解 " 和 ” 生成 " 人类语言的能力 , 包括

  • 识别文本中的意图
  • 提取信息
  • 回答问题
  • 进行推理
  • 情感分析
  • 语言翻译

等多种任务 , 是一门 交叉学科 , 融合了 语言学、计算机科学、数学 等 多个学科领域 , 使用了如下技术 :

  • 机器学习算法 , 如 : 分类、聚类、序列标注 ;
  • 深度学习模型 , 如 : 循环神经网络、Transformer 模型 ;
  • 统计模型 ;

自然语言处理 ( NLP , Natural Language Processing ) 主要包含

  • 自然语言理解 ( NLU , Natural Language Understanding )
  • 自然语言生成 ( NLG , Natural Language Generation )

两个 子领域 ;

在实际应用中 , 自然语言理解 NLU 和 自然语言理解 NLG 的功能是互补的 ,

  • NLU 提供了理解用户输入的能力 , 将 自然语言 转为 指定格式的 状态数据 , 如 JSON 格式 / XML 格式 , 计算机可以使用编程语言 处理这些 状态数据 ;
  • NLG 则将 理解后的 状态数据 内容 , 转化为自然语言输出 ;

二、自然语言理解 NLU


自然语言理解 ( NLU , Natural Language Understanding ) 指的是 计算机系统 能够 理解 和 推断 人类语言 的 含义和意图 , 能够 处理和理解 人类语言的复杂性,将 文本输入 转换成 计算机可以操作的形式 , 如 : JSON 或 XML 格式 , 从而支持各种应用程序和系统的开发和改进 ;

自然语言理解 ( NLU , Natural Language Understanding ) 可以实现 :

  • 语义理解
  • 意图分类
  • 情感分析
  • 命名实体识别
  • 问答系统

等功能 ;

自然语言理解 ( NLU , Natural Language Understanding ) 工作原理 :

  • 文本预处理 : 对 输入文本数据 进行 分词、文本清洗、归一化等预处理操作 ;
  • 语法分析 : 理解句子的 结构 和 语法关系 , 包括 词性标注 和 依存语法分析 ;
  • 语义分析 : 理解 文本的语法结构 之后 , 进行 实体识别、关系抽取、意图识别 等语义分析操作 ;
  • 语境理解 : 管理 对话状态 和 理解上下文 , 保证 连续对话 的 连贯性 ;

三、自然语言生成 NLG


自然语言生成 ( NLG , Natural Language Generation ) 是一种人工智能技术 , 将 结构化数据 或 非语言格式的数据 转换成人类可以理解的 自然语言文本 ;

自然语言生成 是 自然语言处理 ( NLP , Natural Language Processing ) 领域中的一个重要子领域 , 通过 计算机在特定交互目标下生成语言文本 , 模拟人类语言和思考过程 , 以满足用户对数据和信息的需求 ;

自然语言生成 ( NLG , Natural Language Generation ) 的 步骤 :

  • 确定内容 : 确定包含在 生成 的 文本 中 的信息 , 这个信息比 最终生成的信息 要多 ;
  • 文本组织 : 按照语言逻辑 , 组织文本顺序 , 如 : 描述一个事件 , 优先将日期 , 人物 , 场景 描述出来 , 然后描述动作 , 最后描述 结果 ;
  • 句子构建 : 选择 单词 和 短语 来构成 完整句子 , 将多个信息合并到一个句子里进行表达 , 并添加 连接词 使内容看起来是一个完整的句子 ;

四、使用 提示词 + 大模型 实现 NLU


GPT 大模型 可以解析 提示词 Prompt 中的 文本信息 , 将其中的关键信息筛选出来 ;

在 提示词 中 , 可以使用如下 话术 , 将 GPT 大模型 的 输出 限定为 JSON 格式 , 并且可以指定每个 JSON 字段的名称和值 , 以及值的类型 ;

代码语言:javascript
复制
以JSON格式输出。

1. xxx字段的取值为xxx类型,取值是xxx;

实现 NLU 的 提示词 模板如下 :

代码语言:javascript
复制
# prompt 模版
prompt = f"""
{instruction}

{output_format}

用户输入:
{input_text}
"""
  • instruction 字符串 用于描述 要处理的任务要求 , 一般都是 你的任务是识别用户输入的内容。xxx。根据用户输入,识别用户的xxx种属。
代码语言:javascript
复制
# 任务描述
instruction = """
你的任务是识别用户输入的内容。
这是一个高考志愿推荐系统,识别出考生姓名,考生所在的省份,考生的分数。
根据用户输入,识别用户的上述三种属。
"""
  • output_format 字符串 用于描述 输出格式 :
代码语言:javascript
复制
# 输出描述
output_format = """
以JSON格式输出。

1. name字段的取值为string类型,取值是考生的姓名;

2. province字段的取值为string类型,取值是考生所在的省份;

3. score字段的取值为int类型,取值是考生的考试分数;

只输出中只包含用户提及的字段,不要猜测任何用户未直接提及的字段,不输出值为null的字段。
"""
  • input_text 字符串 是 用户输入 , instruction 和 output_format 参数是固定的 , 但是 input_text 参数 每次都要重新拼接进去 ;
代码语言:javascript
复制
# 用户输入
input_text = """
我叫韩曙亮,河北省的高考考生,高考成绩485分,我能上清华大学吗,我劝你耗子尾汁,给我一个肯定的答复。
"""

在下面的代码中 , 使用 Python 语言 调用 OpenAI 的 API , 输入上述提示词 , 可以自动获取 包含 指定 字段 的 JSON 输出结果 ;

代码示例 :

代码语言:javascript
复制
from openai import OpenAI

client = OpenAI(
    api_key="sk-6o3KJuuocEXpb1Ug39D0A4913a844fCaBa892eDe9814Df8a",
    base_url="https://api.xiaoai.plus/v1",
)

# 任务描述
instruction = """
你的任务是识别用户输入的内容。
这是一个高考志愿推荐系统,识别出考生姓名,考生所在的省份,考生的分数。
根据用户输入,识别用户在上述三种属。
"""

# 输出描述
output_format = """
以JSON格式输出。

1. name字段的取值为string类型,取值是考生的姓名;

2. province字段的取值为string类型,取值是考生所在的省份;

3. score字段的取值为int类型,取值是考生的考试分数;

只输出中只包含用户提及的字段,不要猜测任何用户未直接提及的字段,不输出值为null的字段。
"""

# 用户输入
input_text = """
我叫韩曙亮,河北省的高考考生,高考成绩485分,我能上清华大学吗,我劝你耗子尾汁,给我一个肯定的答复。
"""

# prompt 模版
prompt = f"""
{instruction}

{output_format}

用户输入:
{input_text}
"""


completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": prompt}
    ],
    temperature=0,  # 要生成稳定的状态数据 , 设置最小随机性
)

print(completion.choices[0].message.content)

执行结果 : 最终得到一个 JSON 格式的输出结果 ;

代码语言:javascript
复制
{
  "name": "韩曙亮",
  "province": "河北省",
  "score": 485
}

五、使用 提示词 + 大模型 实现 NLG


自然语言生成 ( NLG , Natural Language Generation ) 是 将 格式化的 状态数据 转为 自然语言文本 ;

在上面的 NLU 中 , 将用户输入的语言 , 处理后得到 JSON 数据如下 :

代码语言:javascript
复制
{
  "name": "韩曙亮",
  "province": "河北省",
  "score": 485
}

在本 NLG 示例中 , 给定上述 JSON 数据 , 在任务描述中 , 解释每个字段的作用 ,

代码语言:javascript
复制
# 任务描述
instruction = """
你的任务是识别用户输入的内容。
这是一个高考志愿推荐系统,name字段是考生姓名,province字段是考生所在的省份,score字段是考生的分数。
给出一个高考志愿推荐。
"""

在 输出描述 中 , 针对不同的参数给出不同的操作 ;

代码语言:javascript
复制
# 输出描述
output_format = """
给出高考志愿推荐。
650分以上推荐清华大学。
550分以上推荐河北农业大学。
450分以上推荐衡水学院。
语气要委婉,口语化,亲切一些。
"""

将上述 任务描述 , 输出描述 , 用户输入 , 组合成提示词 ;

代码语言:javascript
复制
# 任务描述
instruction = """
你的任务是识别用户输入的内容。
这是一个高考志愿推荐系统,name字段是考生姓名,province字段是考生所在的省份,score字段是考生的分数。
给出一个高考志愿推荐。
"""

# 输出描述
output_format = """
给出高考志愿推荐。
650分以上推荐清华大学。
550分以上推荐河北农业大学。
450分以上推荐衡水学院。
语气要委婉,口语化,亲切一些。
"""

# 用户输入
input_text = """
{
  "name": "韩曙亮",
  "province": "河北省",
  "score": 485
}
"""

# prompt 模版
prompt = f"""
{instruction}

{output_format}

用户输入:
{input_text}
"""

代码示例 :

代码语言:javascript
复制
from openai import OpenAI

client = OpenAI(
    api_key="sk-6o3KJuuocEXpb1Ug39D0A4913a844fCaBa892eDe9814Df8a",
    base_url="https://api.xiaoai.plus/v1",
)

# 任务描述
instruction = """
你的任务是识别用户输入的内容。
这是一个高考志愿推荐系统,name字段是考生姓名,province字段是考生所在的省份,score字段是考生的分数。
给出一个高考志愿推荐。
"""

# 输出描述
output_format = """
给出高考志愿推荐。
650分以上推荐清华大学。
550分以上推荐河北农业大学。
450分以上推荐衡水学院。
语气要委婉,口语化,亲切一些。
"""

# 用户输入
input_text = """
{
  "name": "韩曙亮",
  "province": "河北省",
  "score": 485
}
"""

# prompt 模版
prompt = f"""
{instruction}

{output_format}

用户输入:
{input_text}
"""


completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": prompt}
    ],
    temperature=0,  # 要生成稳定的状态数据 , 设置最小随机性
)

print(completion.choices[0].message.content)

执行结果 :

代码语言:javascript
复制
亲爱的韩曙亮同学,恭喜你在高考中取得了485分的优异成绩!根据你的成绩和所在的河北省,我建议你可以考虑衡水学院作为你的志愿大学,这里有优秀的学习环境和丰富的课外活动,希望能为你的未来发展提供更多的可能性。祝你前程似锦,期待你在志愿填报中有所收获!
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、自然语言处理 NLP
  • 二、自然语言理解 NLU
  • 三、自然语言生成 NLG
  • 四、使用 提示词 + 大模型 实现 NLU
  • 五、使用 提示词 + 大模型 实现 NLG
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档