当前位置: 首页 > news >正文

外贸选品网站永久二级域名分发平台

外贸选品网站,永久二级域名分发平台,卢氏县网站建设推广,酒店加盟什么网站建设1.什么是提示词 在人工智能领域#xff0c;提示词#xff08;Prompt#xff09;扮演着至关重要的角色#xff0c;它宛如一把精准的钥匙#xff0c;为 AI 大模型开启理解之门。作为向模型输入的关键信息或引导性语句#xff0c;提示词能够助力模型迅速洞悉问题需求#…1.什么是提示词 在人工智能领域提示词Prompt扮演着至关重要的角色它宛如一把精准的钥匙为 AI 大模型开启理解之门。作为向模型输入的关键信息或引导性语句提示词能够助力模型迅速洞悉问题需求进而生成精准的回答。 具体而言提示词功效显著。一方面它能提升回答准确性补充背景资料、设定限定条件让答案更切题削减模糊性另一方面可把控回答走向限定篇幅、雕琢风格、拿捏语气。甚至还可以激发模型创意潜能带来新颖思路与独特想法。 从类型上划分提示词通常可归为两大类别描述型提示词与指令型提示词。 描述型提示词恰似一位细致的画师通过对事物全方位、多层次的刻画如外观的勾勒、特征的描摹、功能的阐述以及用途与背景的交代等引导模型生成贴合需求的内容。 指令型提示词则像一位果断的指挥官以简洁有力的指令直白地告知模型需要执行的任务诸如撰写特定主题的文章、运用特定手法描述场景或是按照指定格式回答问题等让模型清晰知晓行动方向。 2.Spring AI中的提示词(Prompt) 在 Spring AI 中处理 Prompt 类似于在 Spring MVC 中管理 VIEW需要创建动态内容占位符这些占位符会根据用户请求或应用程序中的其他代码进行替换从而生成完整的 Prompt 并传递给模型。也类似包含表达式占位符的 SQL 语句。 最初Prompt 只是简单的字符串但随着技术发展其逐渐包含了特定输入的占位符例如 “USER:” 等以便模型能够识别不同部分的信息。OpenAI 进一步推动了 Prompt 结构的发展将多个消息字符串分类为不同角色如系统角色SYSTEM、用户角色USER、助手角色ASSISTANT和工具 / 函数。 第三章介绍到ChatClient 对象提供了三个prompt()重载方法: chatClient.prompt() .user((你给我说一个笑话) .call() .content(); chatClient.prompt(new Prompt(你给我说一个笑话)) .call() .content(); chatClient.prompt(你给我说一个笑话) .call() .content();上述三种方法实现的功能一样向AI大模型发送用户的消息你给我说一个笑话。这就是提示词针对这个提示词可以做进一步的优化让大模型更清楚的明白你的需求比如你给我说一个周星驰风格的笑话。 3.核心接口 3.1 Prompt接口 Prompt 是一个 ModelRequest表示 AI 模型请求中使用的提示词它封装了 Message 对象列表和可选的模型请求选项。下面的例子让OpenAI讲一个笑话使用ChatModel几种调用写法。 //第一种方法chatModel.call(讲一个笑话);//第二种方法chatModel.call(new Prompt(讲一个笑话));//第三种方法var openAiChatOptions OpenAiChatOptions.builder().model(gpt-3.5-turbo).temperature(0.4).maxTokens(200).build();var prompt new Prompt(讲一个笑话, openAiChatOptions);chatModel.call(prompt);//第四种方法chatModel.call(new UserMessage(讲一个笑话));3.2 Message接口 Message 接口封装了提示词文本、元数据属性集合以及消息分类 MessageType。每个Message在提示词中都有不同角色的作用其内容和意图各不相同。这些角色可以涵盖各种元素从用户查询到人工智能生成的响应再到相关背景信息。 对话模型根据根据对话角色区分消息类别角色与MessageType有对应映射关系 角色MessageType描述ContentSYSTEM(系统)SystemMessage引导人工智能的行为和响应风格为人工智能如何解释和回复输入设置参数或规则。这类似于在开始对话之前向人工智能提供指令。MessageUSER(用户)UserMessage向人工智能提出的问题、命令或陈述。Message MediaASSISTANT(助手)AssistantMessage人工智能对用户输入的响应。Message Media ToolCallTOOL(工具)ToolResponseMessage响应工具调用AssistantMessage时返回附加信息。Message ToolResponse SYSTEM、USER 和 ASSISTANT 之间存在密切的相互关系。USER 向 SYSTEM 发送请求SYSTEM 生成 ASSISTANT 响应用户的请求。在这个过程中SYSTEM 需要理解用户的意图并根据其生成合适的响应。 GetMapping(/ai/joke) public String joke(RequestParam(value message, defaultValue 给我讲个笑话) String message) {SystemMessage systemMessage new SystemMessage(你是一个会讲笑话的智能助手,可以讲各种风格的笑话,比如爆笑、冷笑话、黑色幽默等);UserMessage userMessage new UserMessage(message);ListMessage messages List.of(systemMessage, userMessage);String content this.chatClient.prompt().messages(messages).call().content();return content; }上述例子传给大模型2个Message,一个是用户的需求UserMessage另一个是系统消息SystemMessage。 Message接口定义如下 public interface Content {String getContent();MapString, Object getMetadata(); }public interface Message extends Content {MessageType getMessageType(); }多模态消息类型还实现了 MediaContent 接口提供了媒体内容对象的列表。 public interface MediaContent extends Content {CollectionMedia getMedia();}media字段包含了多模态的输入输出,UserMessage AssistantMessage实现MediaContent接口。 4. PromptTemplate提示词模版 4.1 什么是提示词模板 它是一种预先设计好结构与格式的文本模板其核心目的是引导大模型生成符合特定需求的输出。开发者通过精心构建这些模板将任务相关的关键信息、指令以及期望的回答格式等要素融入其中使得模型在接收到基于模板生成的提示词后能精准理解任务意图并产出高质量的回复。 在 Spring AI 中提示模板关键组件PromptTemplate类。这个类使用由 Terence Parr 开发的开源StringTemplate引擎来构建和管理提示。PromptTemplate类可以便捷的创建提示词然后将这些提示词发送到人工智能模型进行处理。 例如现在需要设计一个讲笑话的智能机器人用户只需要输入笑话的类型和主题可以生成不同类型的笑话adjective topic参数用户可以动态传入如下所示 GetMapping(/ai/joke) public String joke(RequestParam(value adjective, defaultValue 冷笑话) String adjective,RequestParam(value topic, defaultValue 小明) String topic) {PromptTemplate promptTemplate new PromptTemplate(给我讲一个{adjective}笑话关于{topic});Prompt prompt promptTemplate.create(Map.of(adjective, adjective, topic, topic));return chatClient.prompt(prompt).call().content(); }❯ curl http://localhost:8080/ai/joke { completion: 小明走进图书馆问图书管理员“请问这里有没有那本《冷笑话大全》” 管理员回答“有的不过这本书有点冷你要小心别着凉了。” 小明疑惑地问“着凉一本书怎么会让人着凉呢” 管理员微笑着说“因为它是一本冷笑话大全啊” }4.2核心接口 PromptTemplate类实现了多个接口这些接口提供了不同的方式创建提示词。 PromptTemplateStringActions提供最基本的字符串提示词创建。 接口定义: public interface PromptTemplateStringActions { //将提示模板渲染为最终字符串格式无需外部输入适用于没有占位符或动态内容的模板。 String render(); //增强了渲染功能以包含动态内容。它使用 MapString, Object其中映射键是提示模板中的占位符名称 // 值是要插入的动态内容。 String render(MapString, Object model); }使用方法: //将提示模板渲染为最终字符串格式无需外部输入适用于没有占位符或动态内容的模板。 PromptTemplate promptTemplate new PromptTemplate(没有占位符的提示词); String promptStr promptTemplate.render(); System.out.printf(promptStr%s\n, promptStr);//增强了渲染功能以包含动态内容。它使用 MapString, Object其中映射键是提示模板中的占位符名称 // 值是要插入的动态内容。 PromptTemplate promptTemplate1 new PromptTemplate(有占位符提示词,占位符{str}); String promptStr1 promptTemplate1.render(Map.of(str, helloword)); System.out.printf(promptStr1%s\n, promptStr1);//结果 promptStr没有占位符的提示词 promptStr1有占位符提示词占位符hellowordPromptTemplateMessageActions生成和操作 Message 对象来创建提示词。 接口定义: public interface PromptTemplateMessageActions { //建一个没有附加数据的消息对象用于静态或预定义的消息内容。Message createMessage(); //扩展消息创建以集成动态内容接受 MapString, Object其中每个条目代表消息模板中的占位符及其对应的动态值。Message createMessage(ListMedia mediaList); //创建具有静态文本和媒体内容的消息对象。Message createMessage(MapString, Object model);}使用方法: //建一个没有附加数据的消息对象用于静态或预定义的消息内容。 PromptTemplate promptTemplate2 new PromptTemplate(messageActions createMessage静态消息); Message message promptTemplate2.createMessage(); System.out.printf(message%s\n, message.getText()); //扩展消息创建以集成动态内容接受 MapString, Object其中每个条目代表消息模板中的占位符及其对应的动态值。 PromptTemplate promptTemplate3 new PromptTemplate(messageActions createMessage,占位符{str}); Message message1 promptTemplate3.createMessage(Map.of(str, helloword)); System.out.printf(message1%s\n, message1.getText());//创建具有静态文本和媒体内容的消息对象。 PromptTemplate promptTemplate new PromptTemplate(静态文本和媒体内容); ListMedia mediaList new ArrayList(); mediaList.add(0, new Media(new MimeType(img), new URL(https://docs.spring.io/spring-ai/reference/_/img/spring-logo.svg))); UserMessage message2 (UserMessage) promptTemplate.createMessage(mediaList); System.out.printf(new message2%s\n, message2.getMedia().get(0).getData());//结果 messagemessageActions createMessage静态消息 message1messageActions createMessage,占位符helloword new message2https://docs.spring.io/spring-ai/reference/_/img/spring-logo.svgPromptTemplateActions返回Prompt对象对象可以传递给ChatModel以生成响应。 public interface PromptTemplateActions extends PromptTemplateStringActions {Prompt create();Prompt create(ChatOptions modelOptions);Prompt create(MapString, Object model);Prompt create(MapString, Object model, ChatOptions modelOptions);}使用方法: //无需外部数据输入即可生成提示对象非常适合静态或预定义提示。 PromptTemplate promptTemplate1 new PromptTemplate(静态或预定义提示); Prompt prompt promptTemplate1.create(); System.out.printf(prompt%s\n, prompt.getContents());//生成一个无需外部数据输入但带有对话模型请求特定选项的 Prompt 对象。 ZhiPuAiChatOptions chatOptions new ZhiPuAiChatOptions(); chatOptions.setModel(model); chatOptions.setMaxTokens(1024);PromptTemplate promptTemplate4 new PromptTemplate(带有聊天请求特定选项的 Prompt 对象。); Prompt prompt1 promptTemplate4.create(chatOptions); System.out.printf(prompt1%s\n, prompt1.getContents());//扩展提示创建功能以包含动态内容采用 MapString, Object其中每个映射条目都是提示模板中的占位符及其关联的动态值。 PromptTemplate promptTemplate5 new PromptTemplate(PromptTemplateActions,占位符{str}); Message message3 promptTemplate5.createMessage(Map.of(str, helloword)); System.out.printf(message3%s\n, message3.getText());//模型特定选项动态参数 Prompt prompt2 promptTemplate5.create(Map.of(str, helloword), chatOptions); System.out.printf(prompt2%s\n, prompt2.getContents());4.3 多角色提示词 提示词模板也可以应用于不同类型的角色消息比如SystemMessage。同时可以讲多个角色Message组合一起构建Prompt。 GetMapping(/ai) String generation() {String name 三国百晓生;String userText 讲一讲赤壁之战的故事;Message userMessage new UserMessage(userText);String systemText 你是一个能讲历史故事的智能助手尤其精通三国历史。你的名字是{name}。;SystemPromptTemplate systemPromptTemplate new SystemPromptTemplate(systemText);Message systemMessage systemPromptTemplate.createMessage(Map.of(name, name));Prompt prompt new Prompt(List.of(userMessage, systemMessage));String content chatClient.prompt(prompt).advisors(new SimpleLoggerAdvisor()).call().content();return content; }上述例子通过使用系统提示模板SystemPromptTemplate创建一个带有系统角色的消息并传入占位符值来构建Prompt实例。然后将带有用户角色的消息与系统角色的消息相结合构建最终的提示词传给大模型。 4.4 提示词从资源文件导入 Spring AI 支持org.springframework.core.io.Resource因此可以将提示词数据放在一个文件中该文件可直接在PromptTemplate中使用。例如,可以 使用 Value 注解从配置文件或环境中注入 Resource 对象。 Value(classpath:/prompts/system-message.st) private Resource systemResource;在项目resource/prompts目录新建文件system-message.st内容如下 你是一个能讲历史故事的智能助手尤其精通三国历史。 你的名字是{name}。完整例子 Value(classpath:/prompts/system-message.st) private Resource systemResource;GetMapping(/ai) String ai() {SystemPromptTemplate systemPromptTemplate new SystemPromptTemplate(systemResource);Message systemMessage systemPromptTemplate.createMessage(Map.of(name, 智能助手));Prompt prompt new Prompt(List.of(systemMessage));String content chatClient.prompt(prompt).advisors(new SimpleLoggerAdvisor()).call().content();return content; }5.提示词工程 在生成式人工智能领域提示词的创建对于开发者而言是一项至关重要的任务。这些提示词的质量和结构会显著影响人工智能输出的效果。花时间和精力精心设计提示词能大幅提升人工智能给出的结果。 在人工智能社区中分享和讨论提示词是一种常见做法。这种协作方式不仅营造了共享的学习环境还能发现并使用高效的提示词。 该领域的研究通常涉及分析和比较不同的提示词以评估它们在各种情境下的有效性。例如一项重要研究表明以 “深呼吸然后一步步解决这个问题” 作为提示词的开头能显著提高解决问题的效率。这凸显了精心挑选的措辞对生成式人工智能系统性能的影响。 随着人工智能技术的迅速发展掌握提示词的最有效用法是一项持续的挑战。你应当认识到提示工程的重要性并考虑借鉴社区经验和研究成果改进提示词创建策略。 5.1 创建有效提示词 在创建提示词时几个关键要素保证清晰和有效至关重要: 指令:向 AI 提供清晰直接的指令类似与人交流的方式。这种清晰度对于帮助 AI“理解”预期内容至关重要。上下文背景:添加相关背景信息或人工智能响应的具体指导。这些External Context构成了Prompt的框架并帮助人工智能掌握整体情况。用户输入:用户的直接请求或问题构成了提示词的核心。输出指示器:指定人工智能回复所需的格式比如 JSON 格式。不过要注意人工智能可能并不总是严格遵循这种格式。例如它可能会在实际的JSON数据前加上类似“这是你的 JSON”这样的短语或者有时生成一个类似JSON但不准确的结构。 在构思提示词时为人工智能提供预期问答格式的示例会大有效果。这种做法有助于人工智能 “理解” 你提问的结构和意图从而给出更精确、贴切的回复。 5.2提示词技巧 详细了解提示词工程可以访问提示词工程指南https://www.promptingguide.ai/ 如下是一些有用的技巧资源。 5.2.1简单技术 文本摘要 将大量文本精简为简洁的摘要捕捉关键点和主要思想同时省略不太重要的细节。 问答 侧重于根据用户提出的问题从提供的文本中得出具体答案。它旨在针对查询精确定位和提取相关信息。 文本分类 系统地将文本分类到预定义的类别或组中分析文本并根据其内容将其分配给最合适的类别。 对话 创建交互式对话使人工智能能够与用户进行来回交流模拟自然的对话流程。 代码生成 根据特定的用户需求或描述生成功能性代码片段将自然语言指令转化为可执行代码。 5.2.2高级技巧 零样本、少样本学习 使模型能够在几乎没有或完全没有特定问题类型的先验示例的情况下做出准确预测或响应利用所学 的通用知识来理解并处理新任务。 思维链 将多个人工智能回复联系起来以创建连贯且有上下文感知的对话。它有助于人工智能保持讨论的主 线确保相关性和连续性。 ReAct推理 行动 在这种方法中人工智能首先分析输入原因然后确定最合适的行动或响应方案。它将理解与决策结合在一起。 6.Tokens Tokens在人工智能模型处理文本的过程中至关重要它就像一座桥梁将我们所理解的单词转换为人工智能模型能够处理的格式。这种转换分两个阶段进行输入时单词被转换为Tokens输出时这些Tokens再转换回单词。 标记化Tokenization即将文本分解为Tokens的过程是人工智能模型理解和处理语言的基础。人工智能模型通过这种标记化格式来理解并回应提示。 为了更好地理解Tokens可以将它们看作是单词的片段。通常一个标记大约代表四分之三个单词。例如莎士比亚的全部作品大约有 90 万个单词转换后大约为 120 万个标记。 可以使用 OpenAI Tokenizer UI进行测试看看单词是如何转换为标记的。 Tokens除了在人工智能处理中发挥技术作用外在计费和模型能力方面还有实际影响 计费人工智能模型服务通常根据Tokens使用量计费。输入提示和输出回复都会计入总Tokens数因此较短的提示更具成本效益。 模型限制不同的人工智能模型有不同的标记限制这决定了它们的 “上下文窗口”即它们一次能够处理的最大信息量。例如GPT-3的限制是4000个标记而像Claude2和Meta Llama2等其他模型的限制是10万个Tokens一些研究模型最多可以处理100万个Tokens。 上下文窗口模型的Tokens限制决定了其上下文窗口。超过此限制的输入将不会被模型处理。发送仅够处理的最少有效信息集至关重要。例如当询问关于《哈姆雷特》的问题时无需包含莎士比亚其他所有作品的Tokens。 回复元数据人工智能模型回复的元数据包括使用的Tokens数量这是管理使用情况和成本的关键信息。 7.总结 本文围绕与大模型进行有效沟通的提示词Prompt技术全面展开涵盖基础概念、Spring AI 中的应用、核心接口、提示词模板、提示词工程以及 Tokens 相关知识为利用提示词优化大模型应用提供了系统性指导。
http://www.yingshimen.cn/news/19273/

相关文章:

  • 哪些网站用echarts做的滁州网站开发czesou
  • 做房产网站接不到电话学校网站建设公司
  • 中国做的手机系统下载网站如何在网站做电子报
  • 淘宝客网站建设公司网站备案成功后该怎么做
  • 开源网站模板企业所得税25%怎么计算
  • 商场商城网站建设方案热点网站建设
  • 站长分析工具深圳淘宝运营培训
  • 利用vs做网站做网站需要什么认证
  • 郑州手机网站搭建wordpress 亲子模板下载
  • 100个免费货源网站网站界面设计起着决定性作用
  • 无锡网站制作楚天软件英文站 wordpress
  • 深圳南山网站建设公司封装系统如何做自己的网站
  • 用KEGG网站做KEGG富集分析wordpress版本更新
  • 科技公司网站设计风格成品网站灬1688
  • 网站建设制作公找聊城做网站
  • h5网站制作案例分析网站界面怎么做
  • 美团做团购网站零基础学seo要多久
  • 上海工商查询网官方网站西凤酒网站建设
  • 雍熙网站建设深圳外贸公司排行
  • 郑州新密网站建设跨境电商官网
  • 移动电商网站张店学校网站建设哪家好
  • 介绍网站建设规划书结构网站 模板 安装
  • 哪些网站可以做一些任务挣钱企业站模板大全
  • 南京网站设计工作室普集网站开发
  • 厦门高端网站案例全球推广
  • 小当网 绵阳网站建设大专建设工程管理有用吗
  • 公司网站建设价格标准深圳查询建设项目规划的网站
  • 产品展示类网站模板中国舆情在线网
  • 网站漂浮广告怎么做中国新闻社邮箱
  • 有趣的网站小游戏网址杭州网站优化平台