Functions.Markdown to Functions.Yaml 包迁移指南

Functions.Markdown NuGet 包已弃用,将在将来的版本中删除,作为清理计划的一部分。 建议的替换是 Functions.Yaml 包。

Markdown 提示模板

在将代码从 Functions.Yaml 包迁移到新 API 之前,请考虑先将 markdown 提示模板迁移到新的 YAML 格式。 因此,如果您有这样的 Markdown 提示模板:

This is a semantic kernel prompt template
```sk.prompt
Hello AI, tell me about {{$input}}
```
```sk.execution_settings
{
    "service1" : {
        "model_id": "gpt4",
        "temperature": 0.7,
        "function_choice_behavior": {
            "type": "auto",
        }
    }
}
```
```sk.execution_settings
{
    "service2" : {
        "model_id": "gpt-4o-mini",
        "temperature": 0.7
    }
}

YAML 等效提示模板如下所示:

name: TellMeAbout
description: This is a semantic kernel prompt template
template: Hello AI, tell me about {{$input}}
template_format: semantic-kernel
execution_settings:
  service1:
    model_id: gpt4
    temperature: 0.7
    function_choice_behavior:
      type: auto
  service2:
    model_id: gpt-4o-mini
    temperature: 0.7

KernelFunctionMarkdown.FromPromptMarkdown 方法

如果你的代码使用 KernelFunctionMarkdown.FromPromptMarkdown 方法从提示创建内核函数,请使用 KernelFunctionYaml.FromPromptYaml 方法替换它。

// Before
string promptTemplateConfig = """
This is a semantic kernel prompt template
```sk.prompt
Hello AI, tell me about {{$input}}
```
""";

KernelFunction function = KernelFunctionMarkdown.FromPromptMarkdown(promptTemplateConfig, "TellMeAbout");

//After
string promptTemplateConfig = 
"""
name: TellMeAbout
description: This is a semantic kernel prompt template
template: Hello AI, tell me about {{$input}}
""";

KernelFunction function = KernelFunctionYaml.FromPromptYaml(promptTemplateConfig);

请注意,该方法 KernelFunctionYaml.FromPromptYaml 不接受函数名称作为参数。 函数名称现在是 YAML 配置的一部分。

MarkdownKernelExtensions.CreateFunctionFromMarkdown 方法

同样,如果代码使用MarkdownKernelExtensions.CreateFunctionFromMarkdown内核扩展方法从提示创建内核函数,请将其替换为PromptYamlKernelExtensions.CreateFunctionFromPromptYaml方法。

// Before
string promptTemplateConfig = """
This is a semantic kernel prompt template
```sk.prompt
Hello AI, tell me about {{$input}}
```
""";

Kernel kernel = new Kernel();

KernelFunction function = kernel.CreateFunctionFromMarkdown(promptTemplateConfig, "TellMeAbout");

//After
string promptTemplateConfig = 
"""
name: TellMeAbout
description: This is a semantic kernel prompt template
template: Hello AI, tell me about {{$input}}
""";

Kernel kernel = new Kernel();

KernelFunction function = kernel.CreateFunctionFromPromptYaml(promptTemplateConfig);

请注意,该方法 PromptYamlKernelExtensions.CreateFunctionFromPromptYaml 不接受函数名称作为参数。 函数名称现在是 YAML 配置的一部分。