【Prompt提示词】

摘要:

        本文简单了SpringAI框架中的提示词Prompt,提示词是与AI模型交互的核心组件,其设计直接影响模型输出质量。消息分为User、System、Assistant和Tool四种角色,分别对应不同交互场景。高效提示词应包含清晰指令、上下文、用户输入和输出格式要求。框架支持通过占位符实现动态数据替换。Token是模型处理文本的基础单元,其数量限制和计费方式对应用开发至关重要。开发者需合理控制Token使用量以优化成本和性能。

Spring官方定义 :

提示词是引导 AI 模型生成特定输出的输入,其设计和措辞显著影响模型响应。

        在 Spring AI 与 AI 模型的基础交互层中,提示词的处理方式类似于 Spring MVC 中的 "View" 管理,即创建包含动态内容占位符的扩展文本,随后根据用户请求或应用代码替换这些占位符。另一种类比是包含表达式占位符的 SQL 语句。

一,角色(Role)

1,定义

        每条消息被分配特定角色,这些角色对消息进行分类,向 AI 模型阐明提示每个片段的上下文和目的。这种结构化方法通过让提示的每个部分在交互中扮演明确角色,增强了与 AI 沟通的精细度和有效性。

2,User角色(用户提示词)

        代表用户的输入 — 包括问题、命令或对 AI 的陈述。该角色构成 AI 响应的基础,具有根本重要性。

    public Flux<String> service(String prompt){
        return serviceChatClient
                .prompt()
                .user(prompt)// 传入user提示词
                .stream()
                .content();
    }

3,System角色(系统提示词)

        指导 AI 的行为和响应风格,设定 AI 解释和回复输入的参数或规则,类似于在开始对话前向 AI 提供指令。

(1)默认的系统提示词(全局)

    @Bean
    public ChatClient gameChatClient(OpenAiChatModel model, ChatMemory chatMemory) {
        return ChatClient
                .builder(model)
                .defaultSystem(SystemConstants.GAME_SYSTEM_PROMPT)
                .defaultAdvisors(
                        new SimpleLoggerAdvisor(),
                        new MessageChatMemoryAdvisor(chatMemory)
                )
                .build();
    }

(2)会话的系统提示词(当前会话)

    public Flux<String> service(String prompt){
        return serviceChatClient
                .prompt()
                .user(prompt)// 传入user提示词
                .system("system prompt") // 会话系统提示词
                .stream()
                .content();
    }

4,Assistant 角色

        AI 对用户输入的响应,不仅是答案或反应,更对维持对话流至关重要。通过追踪 AI 之前的响应(其 "Assistant Role" 消息),系统确保连贯且上下文相关的交互。

        助手消息也可能包含函数工具调用请求信息 — 这是 AI 的特殊功能,在需要时执行计算、获取数据等超越对话的特定任务。

5,Tool/Function 角色

        专注于响应工具调用类助手消息,返回附加信息,本质就是Tool Calling 工具调用,对自定义的函数进行响应。

    @Bean
    public ChatClient serviceChatClient(
            AlibabaOpenAiChatModel model,
            ChatMemory chatMemory,
            CourseTools courseTools) {
        return ChatClient.builder(model)
                .defaultSystem("系统提示词")
                .defaultAdvisors(
                        new MessageChatMemoryAdvisor(chatMemory),
                        new SimpleLoggerAdvisor())
                .defaultTools(courseTools)  // 自定义的Tools
                .build();
    }

二,提示词工程

        在生成式 AI 中,提示词创建是开发者的关键任务。这些提示词的质量和结构显著影响 AI 输出的有效性。投入时间精心设计提示词可大幅提升 AI 生成结果。

1,创建高效提示词

(1)指令:向 AI 提供清晰直接的指示,类似于与人沟通的方式。这种明确性对帮助AI “理解” 预期目标至关重要。

(2)外部上下文:必要时包含相关背景信息或对 AI 响应的具体指导。这种 “外部上下文” 构建了提示框架,帮助 AI 理解整体场景。

(3)用户输入:这是直接部分 — 用户构成提示核心的明确请求或问题。

(4)输出指示器:它需要指定 AI 响应的期望格式(如 JSON),但需注意 AI 可能不会严格遵循该格式。例如,它可能在实际 JSON 数据前添加 “这是您的JSON” 等短语,或有时生成不准确的类 JSON 结构(不建议)。

你是房屋租赁平台的智能客服“小居”,负责为用户提供租房全流程的贴心服务。
你的核心职责是用和蔼亲和的语气,自然流畅地解答用户租房相关问题,让用户感受到专业又温暖的支持。

面对用户咨询时,需主动理解需求:若用户找房,需询问预算、户型、位置等关键信息并精准匹配;
若涉及签约流程,需清晰说明合同条款、押金规则、租期要求等细节;
若反馈房屋问题,要耐心记录故障情况并指引报修流程。
交流中多用生活化表达,避免生硬术语,适时使用语气词(如“呀”“呢”)增强亲切感。当用户情绪焦虑时,先安抚情绪再解决问题;对不确定的信息,明确告知“我帮你确认后回复”或转接人工,不随意承诺。
始终以“帮用户轻松租房”为目标,让每一次互动都高效又暖心~ 🏠

要求:在涉及增删改(除了查询)的function-call前,必须等用户回复“确认”后再调用tool,全程用中文与用户交流

2,提示词数据替换

(1)提示词中有需要在代码中替换的数据,如:今天的日期,使用占位符{}

今天的日期是 {current_date}

(2)在请求模型时通过.system()的param语句替换

    @GetMapping(value = "/chat", produces = "text/html;charset=UTF-8")
    public Flux<String> chat(String prompt) {
        //请求模型
        return chatClient.prompt()
                .user(prompt)
                .system(p->p.param("current_date", LocalDate.now()))
                .stream()
                .content();
    }

三,模型Token

        Token 是 AI 模型处理文本的关键要素,作为桥梁将人类理解的单词转换为模型可处理的格式。该转换分两阶段进行:输入时单词转为 Token,输出时 Token 再转回单词。

1,Token化

(1)Token 化(将文本分解为 Token 的过程)是 AI 模型理解和处理语言的基础。模型通过这种 Token 化格式来理解并响应提示词。

(2)理解 Token,可将其视为单词的组成部分。通常一个 Token 相当于单词的约四分之三,例如莎士比亚全集约 90 万单词,会转换为约 120 万Token。

2,模型Token限制

(1)计费:AI 模型服务通常按 Token 使用量计费。输入(提示词)和输出(响应)均计入总 Token 数,因此更短的提示词更具成本效益。

(2)模型限制:不同 AI 模型拥有不同的 Token 限制,即其 “上下文窗口” — 单次可处理的最大信息量。例 如GPT-3 限制为 4K Token。

(3)上下文窗口:模型的 Token 限制决定了其上下文窗口大小。超过该限制的输入不会被处理。关键在于仅发送最小必要有效信息集。

(4)响应元数据:AI 模型响应的元数据包含使用的 Token 数,这是管理使用量和成本的关键信息。

由于给定引用中未包含关于prompt提示词的简历相关内容,以下是一个prompt提示词相关的简历示例模板: ### 个人信息 - **姓名**:[姓名] - **联系方式**:[电话] - **电子邮箱**:[邮箱] - **求职意向**:Prompt提示词工程师/专家 ### 教育背景 - **[大学名称]** - 计算机科学与技术 本科 [入学时间]-[毕业时间] - 相关课程:人工智能基础、自然语言处理、编程语言(Python等) ### 工作经历 - **[公司名称]** - Prompt提示词专员 [入职时间]-[离职时间] - 负责为公司内部的AI项目设计和优化Prompt提示词,提高AI模型的输出质量和准确性。 - 与研发团队合作,测试不同的Prompt策略,根据反馈不断调整和改进提示词。 - 收集和分析用户对AI输出的反馈,总结经验并应用于新的提示词设计中。 ### 项目经验 - **[项目名称]** - AI客服系统Prompt优化项目 - 项目描述:针对公司的AI客服系统,对现有的Prompt提示词进行全面优化,提升客服系统回答的专业性和针对性。 - 担任角色:主要负责Prompt提示词的设计和测试工作。 - 成果:经过优化后,AI客服系统的用户满意度提升了[X]%,问题解决率提高了[X]%。 ### 技能清单 - 熟练掌握自然语言处理相关知识,能够设计出有效的Prompt提示词。 - 精通Python编程语言,熟悉常见的机器学习和深度学习框架。 - 具备良好的数据分析能力,能够通过数据评估Prompt的效果。 - 有较强的逻辑思维和问题解决能力,能够快速定位和解决Prompt相关的问题。 ### 证书与荣誉 - [相关证书名称] - [颁发机构] [颁发时间] - [公司内部荣誉名称] - [公司名称] [获得时间] ### 自我评价 对Prompt提示词设计有浓厚的兴趣和深入的研究,具备丰富的实践经验。能够根据不同的业务场景和需求,设计出高质量的Prompt提示词。善于与团队合作,快速响应和解决问题。不断关注行业动态,学习新的Prompt技术和方法,以提升自己的专业能力。 ### 示例代码 ```python # 一个简单的Prompt提示词生成示例 def generate_prompt(user_question): base_prompt = "请以专业和准确的方式回答以下问题:" return base_prompt + user_question question = "如何提高工作效率?" prompt = generate_prompt(question) print(prompt) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值