news 2026/7/2 6:00:43

Name 不支持中文和特殊字符

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Name 不支持中文和特殊字符
Name = "chat", Description = "给出一段对话记录,总结这部分对话.", Template = SummarizeConversationDefinition, TemplateFormat = "semantic-kernel", InputVariables = new List<InputVariable> { new InputVariable{Name = "request", Description = "用户的问题", IsRequired = true } }, ExecutionSettings = new Dictionary<string, PromptExecutionSettings> { { "default", new OpenAIPromptExecutionSettings() { MaxTokens = 1000, Temperature = 0 } }, { "gpt-3.5-turbo", new OpenAIPromptExecutionSettings() { ModelId = "gpt-3.5-turbo-0613", MaxTokens = 4000, Temperature = 0.2 } }, { "gpt-4", new OpenAIPromptExecutionSettings() { ModelId = "gpt-4-1106-preview", MaxTokens = 8000, Temperature = 0.3 } } }
提示模板语法

目前,我们已经有两个地方使用到提示模板的语法,即变量和函数调用,因为前面已经介绍过相关的用法,因此这里再简单提及一下。

变量

变量的使用很简单,在提示工程中使用{{$变量名称}}标识即可,如{{$name}}

然后在对话中有多种方法插入值,如使用 KernelArguments 存储变量值:

new KernelArguments { { "name", "工良" } });
函数调用

在 实现总结 一节提到过,在提示模板中可以明确调用一个函数,比如定义一个函数如下:

// 没有 Kernel kernel [KernelFunction, Description("给你一份很长的谈话记录,总结一下谈话内容.")] public async Task<string> SummarizeConversationAsync( [Description("长对话记录\r\n.")] string input) { await Task.CompletedTask; return input; } // 有 Kernel kernel [KernelFunction, Description("给你一份很长的谈话记录,总结一下谈话内容.")] public async Task<string> SummarizeConversationAsync( [Description("长对话记录\r\n.")] string input, Kernel kernel) { await Task.CompletedTask; return input; } [KernelFunction] [Description("Sends an email to a recipient.")] public async Task SendEmailAsync( Kernel kernel, string recipientEmails, string subject, string body ) { // Add logic to send an email using the recipientEmails, subject, and body // For now, we'll just print out a success message to the console Console.WriteLine("Email sent!"); }

函数一定需要使用[KernelFunction]标识,[Description]描述函数的作用。函数可以一个或多个参数,每个参数最好都使用[Description]描述作用。

函数参数中,可以带一个Kernel kernel,可以放到开头或末尾 ,也可以不带,主要作用是注入Kernel对象。

在 prompt 中使用函数时,需要传递函数参数:

总结如下:{{AAA.SummarizeConversationAsync $input}}.

其它一些特殊字符的转义方法等,详见官方文档:https://learn.microsoft.com/en-us/semantic-kernel/prompts/prompt-template-syntax

文本生成

前面劈里啪啦写了一堆东西,都是说聊天对话的,本节来聊一下文本生成的应用。

文本生成和聊天对话模型主要有以下模型:

Model typeModel
Text generationtext-ada-001
Text generationtext-babbage-001
Text generationtext-curie-001
Text generationtext-davinci-001
Text generationtext-davinci-002
Text generationtext-davinci-003
Chat Completiongpt-3.5-turbo
Chat Completiongpt-4

当然,文本生成不一定只能用这么几个模型,使用 gpt-4 设定好背景提示,也可以达到相应效果。

文本生成可以有以下场景:

使用文本生成的示例如下,让 AI 总结文本:

按照这个示例,我们先在 Env.cs 中编写扩展函数,配置使用.AddAzureOpenAITextGeneration()文本生成,而不是聊天对话。

public static IKernelBuilder WithAzureOpenAIText(this IKernelBuilder builder) { var configuration = GetConfiguration(); // 需要换一个模型,比如 gpt-35-turbo-instruct var AzureOpenAIDeploymentName = "ca"; var AzureOpenAIModelId = "gpt-35-turbo-instruct"; var AzureOpenAIEndpoint = configuration["AzureOpenAI:Endpoint"]!; var AzureOpenAIApiKey = configuration["AzureOpenAI:ApiKey"]!; builder.Services.AddLogging(c => { c.AddDebug() .SetMinimumLevel(LogLevel.Trace) .AddSimpleConsole(options => { options.IncludeScopes = true; options.SingleLine = true; options.TimestampFormat = "yyyy-MM-dd HH:mm:ss "; }); }); // 使用 Chat ,即大语言模型聊天 builder.Services.AddAzureOpenAITextGeneration( AzureOpenAIDeploymentName, AzureOpenAIEndpoint, AzureOpenAIApiKey, modelId: AzureOpenAIModelId ); return builder; }

然后编写提问代码,用户可以多行输入文本,最后使用000结束输入,将文本提交给 AI 进行总结。进行总结时,为了避免 AI 废话太多,因此这里使用ExecutionSettings配置相关参数。

代码示例如下:

builder = builder.WithAzureOpenAIText(); var kernel = builder.Build(); Console.WriteLine("输入文本:"); var request = ""; while (true) { var input = Console.ReadLine(); if (input == "000") { break; } request += Environment.NewLine; request += input; } var func = kernel.CreateFunctionFromPrompt(new PromptTemplateConfig { Name = "chat", Description = "给出一段对话记录,总结这部分对话.", // 用户的文本 Template = request, TemplateFormat = "semantic-kernel", ExecutionSettings = new Dictionary<string, PromptExecutionSettings> { { "default", new OpenAIPromptExecutionSettings() { MaxTokens = 100, Temperature = (float)0.3, TopP = (float)1, FrequencyPenalty = (float)0, PresencePenalty = (float)0 } } } }); var result = await func.InvokeAsync(kernel); Console.WriteLine($""" 总结如下: {string.Join("\n", result)} """);

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 6:00:05

2026年重庆网络科技公司地址查询要点及相关行业信息解析

在数字化时代&#xff0c;网络科技行业发展迅猛。对于想查询2026年重庆网络科技公司地址的人来说&#xff0c;掌握要点并了解相关行业信息十分重要。网络科技主要指在计算机技术基础上开发建立的一种信息技术&#xff0c;通过网络实现信息的传输、存储、处理等功能。其核心应用…

作者头像 李华
网站建设 2026/7/2 5:56:08

解锁B站缓存视频:一键实现m4s到MP4的快速免费转换

解锁B站缓存视频&#xff1a;一键实现m4s到MP4的快速免费转换 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾有过这样的经历&#xff1…

作者头像 李华
网站建设 2026/7/2 5:55:39

智慧地下管网监测系统助力城市基础设施安全运行

城市如同运转不息的生命体&#xff0c;深埋地下的各类管网&#xff0c;便是支撑城市正常运转的核心生命线&#xff0c;承载着供水、供暖、燃气、电力、通信等关键民生与工业功能。隐蔽于地下的管网系统&#xff0c;维系着城市日常生产生活的有序开展&#xff0c;是极易被忽视却…

作者头像 李华
网站建设 2026/7/2 5:55:03

第6章 Agent 设计模式:ReAct、Plan-and-Execute 与 Reflexion 《AI Agent 开发平台资深技术专家 AI Agent 应用架构师 CTO 面试题库详解

第6章 Agent 设计模式:ReAct、Plan-and-Execute 与 Reflexion “Agent 的本质不是一个大模型,而是一个会犯错的循环体。设计模式,就是给这个循环体装上刹车、方向盘和后视镜。” 6.0 章首导读 如果你只记一句话,请记这句:ReAct 是边走边想,Plan-and-Execute 是先画地图再…

作者头像 李华
网站建设 2026/7/2 5:55:00

电动船舶远程监控管理平台方案

在新能源技术进步的推动下&#xff0c;航运业正加速向绿色转型。电动船舶凭借零排放、低噪音、运营成本低等优势&#xff0c;成为内河航运、沿海运输、近岸旅游等领域的重要发展方向。然而&#xff0c;某运营企业在规模化推广时遇到困扰&#xff1a;船舶电池系统、动力系统、配…

作者头像 李华
网站建设 2026/7/2 5:54:52

Java毕设项目:基于 SpringBoot 的会议室使用记录统计系统的设计与实现 基于 SpringBoot 的企业会议预约服务平台的设计与实现 (源码+文档,讲解、调试运行,定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华