2025-11-20
C#
00

目录

提示词的基本概念
提示词的重要性
Microsoft Semantic Kernel中的提示词模板语言
提示词模板语法
变量
函数调用
函数参数
实际应用示例
提示词工程的最佳实践
结语

在人工智能和大型语言模型(LLM)的世界中,提示词(Prompts)扮演着至关重要的角色。它们是我们与AI沟通的桥梁,决定了AI输出的质量和相关性。本文将深入探讨Microsoft Semantic Kernel中的提示词工程,帮助您理解如何有效地利用提示词来提升AI应用的效果。

提示词的基本概念

提示词是我们提供给模型的输入或查询,以期获取特定的响应。在Microsoft Semantic Kernel中,提示词工程(Prompt Engineering)已成为一个新兴的专业领域,它需要创造力和对细节的关注。

提示词的重要性

有效的提示词设计对于从LLM AI模型中获得预期结果至关重要。通过精心选择正确的词语、短语、符号和格式,可以引导模型生成高质量且相关的文本。

例如,考虑以下两个提示词:

text
请给我讲述人类的历史。 请用3句话给我讲述人类的历史。

第一个提示词可能会产生一个冗长的报告,而第二个提示词则会产生一个简洁的回应。如果您正在构建空间有限的用户界面,第二个提示词会更适合您的需求。

Microsoft Semantic Kernel中的提示词模板语言

Microsoft Semantic Kernel提供了一种简单的方式来使用纯文本定义和组合AI函数。它支持三种基本功能:包含变量、调用外部函数和向函数传递参数。

提示词模板语法

Semantic Kernel的提示词模板语言使用花括号{{...}}来嵌入表达式。以下是基本语法:

变量

包含变量使用{{$variableName}}语法:

text
你好,{{$name}}!今天天气怎么样?

当提示词被执行时,{{$name}}将被替换为实际的名字值。

函数调用

调用外部函数使用{{namespace.functionName}}语法:

text
当前的日期和时间是:{{time.now}}

这将调用time命名空间中的now函数,并将其结果插入到提示词中。

函数参数

向函数传递参数使用{{namespace.functionName $parameterName}}语法:

text
将以下文本翻译成中文:{{translator.translate $text language="中文"}}

实际应用示例

C#
#pragma warning disable SKEXP0010 using Microsoft.SemanticKernel; using Microsoft.SemanticKernel.ChatCompletion; using Microsoft.SemanticKernel.Connectors.OpenAI; using System.Text.Json; namespace AppDeepSeekPrompt { internal class Program { // 定义提示词模板类 public class PromptTemplate { public string Name { get; set; } public string Description { get; set; } public string Template { get; set; } public Dictionary<string, string> InputVariables { get; set; } } static async Task Main(string[] args) { // 创建更安全的Semantic Kernel配置 var kernelBuilder = Kernel.CreateBuilder(); kernelBuilder.AddOpenAIChatCompletion( modelId: "deepseek-chat", apiKey: Environment.GetEnvironmentVariable("DEEPSEEK_API_KEY") ?? "sk-xxxx", endpoint: new Uri("https://api.deepseek.com/v1") ); // 构建内核 var kernel = kernelBuilder.Build(); // 定义高级提示词模板 var microservicesPromptTemplate = new PromptTemplate { Name = "微服务架构解析", Description = "专业解释微服务架构的关键设计原则", Template = @" 作为一个专业的软件架构专家,请详细解释微服务架构的关键设计原则: 1. 上下文: {{$context}} 2. 具体要求: {{$requirement}} 请提供: - 架构原则的深入解析 - 实践中的具体应用示例 - 潜在的挑战和解决策略 - 对现代软件开发的影响", InputVariables = new Dictionary<string, string> { { "context", "软件工程企业级应用" }, { "requirement", "全面阐述微服务架构设计原则" } } }; try { // 方法1:使用高级模板引擎 var promptConfig = new KernelArguments { ["context"] = microservicesPromptTemplate.InputVariables["context"], ["requirement"] = microservicesPromptTemplate.InputVariables["requirement"] }; var result = await kernel.InvokePromptAsync( microservicesPromptTemplate.Template, promptConfig ); Console.WriteLine("微服务架构解析结果:"); Console.WriteLine(result); // 方法2:使用聊天完成服务 var chatCompletionService = kernel.GetRequiredService<IChatCompletionService>(); var chatResult = await chatCompletionService.GetChatMessageContentsAsync( new ChatHistory { new ChatMessageContent(AuthorRole.System, "你是一个专业的技术架构咨询专家"), new ChatMessageContent(AuthorRole.User, microservicesPromptTemplate.Template) }, new OpenAIPromptExecutionSettings { MaxTokens = 800, Temperature = 0.6, TopP = 0.9 } ); Console.WriteLine("\n聊天模式输出:"); foreach (var content in chatResult) { Console.WriteLine(content.Content); } } catch (Exception ex) { Console.WriteLine($"发生错误: {ex.Message}"); Console.WriteLine($"详细异常: {ex}"); } Console.ReadKey(); } } }

image.png

提示词工程的最佳实践

成为一名熟练的提示词工程师需要技术知识、创造力和实验精神的结合。以下是一些提示词工程的最佳实践:

  1. 理解LLM AI模型:深入了解LLM AI模型的工作原理,包括它们的架构、训练过程和行为。
  2. 领域知识:获取特定领域的知识,以设计符合所需输出和任务的提示词。
  3. 实验:探索不同的参数和设置,以微调提示词并优化模型在特定任务或领域的行为。
  4. 反馈和迭代:持续分析模型生成的输出,并根据用户反馈迭代提示词,以提高其质量和相关性。
  5. 保持更新:跟上提示词工程技术、研究和最佳实践的最新进展,以提高您的技能并在该领域保持领先地位。

结语

提示词工程是一个动态且不断发展的领域,熟练的提示词工程师在有效利用LLM AI模型的能力方面发挥着至关重要的作用。通过Microsoft Semantic Kernel提供的工具和技术,开发人员可以创建强大的AI驱动应用程序,实现个性化交互和高质量的输出。

希望本文能帮助您更好地理解提示词工程的重要性,并在您的AI项目中有效地应用这些技术。

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!