当前位置:   article > 正文

OpenAI:prompt的使用

OpenAI:prompt的使用

本文用的LLM是openai的gpt系列。
刚开始学大模型,如果出现错误内容或着描述不恰当的部分,后续会修改。

  Prompt是输入给AI模型的文本或语句,用来引导大模型(Large Language Model, LLM)生成相关的输出。好的prompt可以提高大模型输出的准确性和可靠性。一般而言,好的prompt的特点是:具体、丰富、少歧义

1.Prompt

1.1 prompt典型构成

  • 角色:给 AI 定义一个最匹配任务的角色,比如:“你是一位软件工程师”等;
  • 指示:对任务进行简单描述;
  • 上下文:给出与任务相关的其它背景信息(经常用在多轮对话中);
  • 例子:必要时给出举例;
  • 输入:任务的输入信息;在提示词中明确的标识出用户输入;
  • 输出:输出的格式描述,以便后继模块自动解析模型的输出结果,比如JSON、XML等;

1.2 prompt使用

这里使用代码的方式来使用大模型(具体的代码环境需自行配置),具体举例如下:

from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

client=OpenAI()

message=[
    {"role":"system","content":"你是一个微信公众号文章的写手。"},
    {"role":"user","content":"写一段话介绍大模型,字数要求200字以内。"},
]

response=client.chat.completions.create(
    model="gpt-4",
    messages=message,
    temperature=0.8)

print(response.choices[0].message.content)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

其输出为:

大模型,指的是通过大量数据训练得到的庞大的人工智能系统。这类模型因其庞大的参数数量和强大的数据处理能力而得名。它们能够处理复杂的任务,如自然语言理解、图像识别、语音处理等。大模型通过深度学习技术,学习数据中的模式和规律,从而实现对语言、图像等多种类型数据的理解和生成。这些模型的训练需要大量的计算资源和数据,因此常常由拥有强大计算能力的大型科技公司或研究机构开发。大模型的出现推动了人工智能技术的边界,使得机器能够在更多领域内执行复杂的任务,表现出接近甚至超越人类的能力。

从上文代码中可以看到client.chat.completions.create中的message参数主要用来接收prompt。关于message的说明主要有以下几点:

  • message是一个object组成的数组。每个object都包含至少两个字段:rolecontent
  • 目前message支持的角色类型role有:systemuserassistanttool
  • rolesystem时,代表系统产生的消息或提示。此时还有一个可选参数name
  • roleuser时,代表用户发出的消息。
  • roleassistant时,代表大模型返回的内容。
  • roletool时,用来保存tool_call的返回结果。(后续博客会做详细介绍)

举例如下:


message=[
    {"role":"system","content":"你是一个微信公众号文章的写手。你叫小A"},
    {"role":"user","content":"你是谁?"},
]

response=client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=message,
    temperature=0.8)

print(response.choices[0].message.content)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

其输出内容为:

嘿,我是小A,是这个微信公众号的写手。有什么可以帮你的吗?

如果运行命令print(response.choices[0].message),将会看到如下结果(GPT返回的信息中role的值为assistant):

ChatCompletionMessage(content=’ 嘿,我是小A,是这个微信公众号的写手。有什么可以帮你的吗?', role=‘assistant’, function_call=None, tool_calls=None)

2 Prompt使用案例

下面使用一个简单的案例来介绍prompt的使用。具体要求使用大模型通过文章标题来筛选出为阅读或者书籍相关的文章(大模型适合完成文本入、文本出类的任务。)。完整代码如下:

from openai import OpenAI
import json

# 加载 .env 到环境变量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

client=OpenAI()

def get_completion(messages,model='gpt-4'):
    response=client.chat.completions.create(
        model=model,
        messages=messages,
        temperature=0.8)
    return response.choices[0].message.content

prompt="""
##目标
你可以依据用户输入的文章标题,判断这篇文章是否跟阅读或者书籍相关。
##用户输入
{input_article_title}
##输出
只输出“是”或“否”,
##示例
最适合今天读的灵性书籍: 是
肾脏很怕的 8 种食物,很多人每天都吃,还吃不少: 否
"""

article_list=["用七本想象力爆棚的绘本,点燃那颗崭新的童心",
'“书香盈怀 悦读致远” 2023年北京市诵读大赛燕山赛区活动通知',
"哪本书让你流了最多的眼泪?(话费福利)",
"今日宜自我分析",
"文化和自然遗产日:考验你的时刻到啦!",
"英文故事磨耳朵:When Sophie Gets Angry-Really,Really Angry...(附亲子共读获奖名单)",
"今日宜消化情绪",
"拜托了,夏天别和我提吃,除非……",
"预约!预约!预约!",
"今日宜大胆尝试",
"预约!聆听恐龙故事,揭开恐龙足迹背后的远古谜团",
"今日宜品读经典"]

messages=[
        {"role":"user",
         "content":prompt.format(input_article_title=str(article_list))}]
result=get_completion(messages)
print(result)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

大模型输出结果为:












声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/316946
推荐阅读
相关标签
  

闽ICP备14008679号