掌握System Prompt(系统提示词):让AI更懂你的需求

在人工智能技术中,使用大型语言模型(LLM)通过系统提示词(System Prompt)来满足特定化需求是一种高效且灵活的方式。本文将介绍System Prompt的概念、应用方法和编写技巧,通过让AI生成定制化的响应,帮助你在不同场景下,更好地利用AI模型。

1. 什么是System Prompt?

System prompt是指在与AI模型进行交互时,用于设定AI角色、上下文和具体任务的指令。通过System prompt,可以引导AI模型在特定的情境下生成更加符合用户需求的响应。

系统提示词可以包含角色描述、任务要求、目标说明以及需要包含的信息,使得AI能够在更明确的任务指导下进行工作,从而提供更为精确和定制化的回答。

System Prompt示例:

def get_answer_from_gpt():
    messages = [{"role": "system", "content": "你是一个专业的英文翻译,你要把用户发送的中文,直接翻译成英文,或者反过来"},
                {"role": "user", "content": f"你好,见到你很高兴,我希望你能帮助我学习英语"}]
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=messages,
        top_p=0.75
    )

    return response.choices[0].message.content.strip()

response = get_answer_from_gpt()

在示例中,我希望AI作为一个中英文翻译,如果我输入英文,AI会自动翻译成中文,如果我输入中文,AI会翻译成英文。

System Prompt在AI对话中扮演着关键角色,它就像是对话中的一个第三方,负责向AI模型传达如何执行特定任务和响应用户请求。

2. 如何使用System Prompt(系统提示词)

通过System Prompt,AI会记住我的要求。但是,如果是直接在对话中置入提示词,对话历史过长后,或者问题过于复杂,会导致AI遗忘提示词。

错误示例:

为了真正让System Prompt发挥作用,需要在开发时,明确“role”参数选择是“system”还是“user”。

另外,可以在开发系统的时候,定制化自己的提示词。举例来说,LLM模型(如Claude,ChatGPT,ChatGLM)均无法获得现实世界中的时间,我们可以通过构造函数让AI模型获得现实世界的时间信息:

代码示例:

def get_beijing_time():
    beijing_tz = timezone('Asia/Shanghai')
    now = datetime.now(beijing_tz)
    weekday_map = {
        0: "星期一",
        1: "星期二",
        2: "星期三",
        3: "星期四",
        4: "星期五",
        5: "星期六",
        6: "星期日"
    }
    weekday = weekday_map[now.weekday()]
    return now.strftime(f"%Y年%m月%d日 %H:%M:%S ({weekday})")

async def build_openai_prompt(session_id, question):
    prompt = []
    now = time.time()
    system_message = f"你是由Victor开发的微信公众号智能助手,基于OpenAI的gpt-4o-mini(ChatGPT)模型,知识库截止到2023年10月。当前北京时间是 {get_beijing_time()}。请根据用户的问题提供准确、有帮助的回答。请告诉用户,微信公众号回复最多300字,超过会被截断。对于复杂的AI任务,请向用户推荐访问www.workongpt.com,该网站提供AI对话、语音转文字、文档对话、AI写论文/PPT、文档和扫描件翻译、文件格式转换、AI搜索等功能。"
    prompt.append({'role': 'system', 'content': system_message})

    history_messages = await messages_collection.find(
        {
            'sessionId': session_id,
            'deletedAt': {'$exists': False},
            'createdAt': {'$gt': now - CONVERSATION_MAX_AGE / 1000}
        }
    ).sort('createdAt', -1).limit(LIMIT_HISTORY_MESSAGES).to_list(length=None)

    token_size = 0
    for message in reversed(history_messages):
        if token_size > OPENAI_MAX_TOKEN:
            break

        if 'answer' in message and message['status'] == 'completed':
            prompt.append({'role': 'assistant', 'content': message['answer']})
        if 'question' in message:
            prompt.append({'role': 'user', 'content': message['question']})
        token_size += message.get('token', 0)

    prompt.append({'role': 'user', 'content': question})
    return prompt

从上面的代码示例中,我构建了一个新的函数,这个函数会把现实世界中的时间和日期,在系统提示词中反馈给AI模型,这样AI模型就获得了现实世界的时间,更好的回复用户的问题。

代码示例中也涉及到了AI的上下文窗口及记忆模式,后面会单独开一篇,阐述AI的记忆能力是如何实现的。如果对于复杂任务,比如模仿某个人的说话风格和语气,如果通过系统提示词引导AI模型,策略可能会失效,建议使用fine tuning对模型进行微调。

您无需从零开发,我们的智能AI办公网站:www.workongpt.com支持用户自定义系统提示词,以此满足您的定制化AI需求。我们的平台同时提供AI医生、AI电商专家、AI恋人、AI塔罗牌大师等丰富的AI角色,欢迎使用。

3. System Prompt的应用

通过系统提示词,我们可以设计一系列的AI角色,如AI医生、AI公文写手,AI电商专家等。下面是我们设计的一个AI笔杆子,可以以公务员的口吻,生成各类公文。

系统提示词示例:

# Role:公文笔杆子

## Role Profile:
- Response language: 中文
- description: 你是一位政府机关的材料写作者, 专注于为各种公文写作提供优质服务.你熟悉各类公文的格式和标准,对政府机关的工作流程有深入了解。

## Goals:
- 根据用户输入的关键词,思考对应的公文场景,展开写作。
- 输出一篇完整的公文材料,符合规范和标准。
- 输出的公文材料必须准确、清晰、可读性好。

## Constrains:
1. 对于不在你知识库中的信息, 明确告知用户你不知道
2. 你可以调用知识库中关于公文语料的内容

## Skills:
1. 具有强大的文章撰写能力
2. 熟悉各类公文的写作格式和框架
3. 对政府机关的工作流程有深入了解
4. 拥有排版审美, 会利用序号, 缩进, 分隔线和换行符等等来美化信息排版

## Examples :

---
输入: 关于组织年度会议的通知

输出:

关于组织年度会议的通知

根据工作安排和需要,我局决定于 2022 年 3 月 15 日召开年度会议。特此通知,请各有关单位和人员做好相关准备工作。

一、会议时间:2022 年 3 月 15 日 上午 9 时至 11 时

二、会议地点:XX 会议厅

三、会议议程:

1. 2021 年度工作总结和 2022 年工作计划的汇报
2. 评选表彰先进单位和个人
3. 其他事项

请各单位和人员按时参加会议,准备好相关材料和汇报内容,并保持手机畅通。

特此通知!

XX 局
年度会议组织委员会
2022 年 3 月 1 日
---

## Workflows:
你会按下面的框架来帮助用户生成所需的文章, 并通过分隔符, 序号, 缩进, 换行符等进行排版美化

- 理解用户输入的关键词对应的公文场景, 思考该场景的公文特点
- 结合自己的公文经验和该场景特点, 撰写公文, 需注意如下要点:
+ 语言通俗流畅,选择贴近生活的词语
+ 运用大量明喻、拟人手法,增加画面感
+ 使用两两相对的排比句,加强节奏感
+ 融入古诗词名句,增强文采
+ 重点选取关键精神意蕴的语录
+ 结尾带出正面的价值观念
+ 尊重事实,避免过度美化
+ 主题突出,弘扬中国社会主义核心价值观
+ 具有知识性、可读性与教育性
- 在文章结束时, 思考该文章的最核心关键词

## Initializatoin:
简介自己, 提示用户输入公文场景关键词.

www.workongpt.com提供了自定义系统提示词的功能,您可以点击右上角的“设置角色”,随后点击“我的Prompt”,点击“添加”按钮,输入“标题”,随后把上面的示例系统提示词全部复制并粘贴到“内容”中,点击“确定”,随后点击使用,即可和AI笔杆子对话。

对话示例:

另外,我们也提供一系列其他AI角色,如AI医生、AI塔罗牌大师、AI恋人、AI导游、AI面试官、AI电商专家等角色,以此满足您各类型的AI问答需求。

4. System Prompt编写原则和技巧

我们整理了常见的System Prompt的编写原则和技巧:

1. 明确定义角色和目标

- 清晰地说明LLM应该扮演什么角色(如专家、助手、教师等)。以第二人称编写,如:你是一个专业的英文翻译员。

- 明确指出对话的目的和预期结果

2. 设定行为准则

- 指定模型应该如何回应(例如:专业、友好、简洁等)

- 设定回答的格式或结构要求

3. 提供背景信息

- 给出必要的背景知识,帮助模型更好地理解上下文

- 如果有特定领域知识,可以简要说明

- 可以通过构建函数,把时间、日期等功能、加入系统提示词中。

4. 限定范围

- 明确指出模型可以讨论的主题范围

- 说明哪些话题或信息是禁止的

5. 使用清晰简洁的语言

- 避免模糊不清或歧义的表述

- 使用简单直接的句子结构

6. 包含示例

- 提供一些期望输出的示例,帮助模型理解要求

- 示例应该多样化,覆盖不同情况

7. 设置交互规则

- 说明如何处理不确定或无法回答的问题

- 说明如何向用户请求额外信息或澄清问题

8. 考虑安全和道德因素

- 包含对有害或不当内容的警告

- 强调遵守道德准则和法律法规

9. 允许灵活性

- 给予模型一定的创造空间,而不是过于僵化的指令

- 鼓励模型在需要时,向用户提问,以此寻求用户提供更多的对话指示

10. 定期更新和优化

- 根据实际对话效果不断调整和改进prompt

- 考虑添加新的指令来应对发现的问题或限制

只要按照以上内容编写系统提示词,无需拘泥于系统提示词的格式和排版,一句话甚至几句话,就可作为您的系统提示词。AI提示词的关键在于清晰表达您的需求,而非冗长的描述。若AI模型足够智能,简单的系统提示词也会发挥出很好的效果。


WorkOnGPT:您的一站式AI智能办公平台

🌐 官网:www.workongpt.com

WorkOnGPT为您提供全方位的AI办公解决方案:

  1. ChatGPT对话:支持多版本GPT模型,配备记忆机制和自定义AI角色

  2. 文档对话:上传多个文件,AI分析总结、解答问题

  3. 万能翻译:支持多种文档、图片及扫描件翻译

  4. 格式转换:支持700多种文件格式转换

  5. 语音转文字:支持多语种音频视频转录

  6. AI写文章:可生成长篇文章,支持上传参考文档

  7. AI写PPT:根据需求生成专业PPT

  8. AI搜索:集成多种搜索引擎,无任何广告

🆓 免费使用:已部署开源LLM模型ChatGLM4-9B

💼 商务合作:提供AI业务开发/测试/部署等服务,欢迎垂询

📚 更多信息:https://docs.workongpt.com/

关注我们:

  • 微信公众号:YReflect(已接入gpt-4o-mini,关注后可免费使用)

  • 个人博客:https://blog.yzl.one/

(扫描上方二维码,进入我们的AI办公平台:www.workongpt.com)
(扫描上方二维码,关注我们的微信公众号:YReflect)

Last updated