Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az előző, Retrieval-Augmented Generation (RAG) alapú példákban a releváns információk lekérésekor a felhasználói kérést használták keresési lekérdezésként. A felhasználó megkérdezése hosszú lehet, és több témakörre is kiterjedhet, vagy több különböző keresési implementáció érhető el, amelyek speciális eredményeket biztosítanak. Ezen forgatókönyvek bármelyike esetén hasznos lehet engedélyezni, hogy az AI-modell kinyerje a keresési lekérdezést vagy lekérdezéseket a felhasználótól, és függvényhívással kérje le a szükséges információkat.
Tipp
Az ezen a lapon látható minták futtatásához lépjen a GettingStartedWithTextSearch/Step3_Search_With_FunctionCalling.cs lapra.
Függvényhívás Bing szöveges kereséssel
Tipp
Az ebben a szakaszban szereplő minták egy szűrő használatával IFunctionInvocationFilter naplózják a modell által meghívt függvényt és az általa küldött paramétereket.
Érdekes látni, hogy a modell mit használ keresési lekérdezésként a SearchPluginhívás során.
Itt található a IFunctionInvocationFilter szűrő implementációja.
private sealed class FunctionInvocationFilter(TextWriter output) : IFunctionInvocationFilter
{
public async Task OnFunctionInvocationAsync(FunctionInvocationContext context, Func<FunctionInvocationContext, Task> next)
{
if (context.Function.PluginName == "SearchPlugin")
{
output.WriteLine($"{context.Function.Name}:{JsonSerializer.Serialize(context.Arguments)}\n");
}
await next(context);
}
}
Az alábbi minta létrehoz egy SearchPlugin Bing-alapú webes keresést.
Ez a beépülő modul az AI-modell számára lesz meghirdetve automatikus függvényhíváshoz való használatra, a(z) FunctionChoiceBehavior használatával az utasítás-végrehajtási beállításokban.
A minta futtatásakor ellenőrizze a konzol kimenetét, hogy lássa, milyen modellt használt a keresési lekérdezés.
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
using Microsoft.SemanticKernel.Data;
using Microsoft.SemanticKernel.Plugins.Web.Bing;
// Create a kernel with OpenAI chat completion
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddOpenAIChatCompletion(
modelId: "gpt-4o",
apiKey: "<Your OpenAI API Key>");
kernelBuilder.Services.AddSingleton<ITestOutputHelper>(output);
kernelBuilder.Services.AddSingleton<IFunctionInvocationFilter, FunctionInvocationFilter>();
Kernel kernel = kernelBuilder.Build();
// Create a search service with Bing search
var textSearch = new BingTextSearch(apiKey: "<Your Bing API Key>");
// Build a text search plugin with Bing search and add to the kernel
var searchPlugin = textSearch.CreateWithSearch("SearchPlugin");
kernel.Plugins.Add(searchPlugin);
// Invoke prompt and use text search plugin to provide grounding information
OpenAIPromptExecutionSettings settings = new() { FunctionChoiceBehavior = FunctionChoiceBehavior.Auto() };
KernelArguments arguments = new(settings);
Console.WriteLine(await kernel.InvokePromptAsync("What is the Semantic Kernel?", arguments));
Függvényhívás a Bing szöveges kereső és hivatkozások használatával
Az alábbi minta tartalmazza az idézetek hozzáadásához szükséges módosításokat:
- A
SearchPluginlétrehozásához használja a(z)CreateWithGetTextSearchResultselemet, így az információ eredeti forrására mutató hivatkozás is szerepelni fog benne. - Módosítsa a kérést, hogy utasítsa a modellt, hogy idézőjeleket tartalmazzon a válaszában.
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
using Microsoft.SemanticKernel.Data;
using Microsoft.SemanticKernel.Plugins.Web.Bing;
// Create a kernel with OpenAI chat completion
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddOpenAIChatCompletion(
modelId: "gpt-4o",
apiKey: "<Your OpenAI API Key>");
kernelBuilder.Services.AddSingleton<ITestOutputHelper>(output);
kernelBuilder.Services.AddSingleton<IFunctionInvocationFilter, FunctionInvocationFilter>();
Kernel kernel = kernelBuilder.Build();
// Create a search service with Bing search
var textSearch = new BingTextSearch(apiKey: "<Your Bing API Key>");
// Build a text search plugin with Bing search and add to the kernel
var searchPlugin = textSearch.CreateWithGetTextSearchResults("SearchPlugin");
kernel.Plugins.Add(searchPlugin);
// Invoke prompt and use text search plugin to provide grounding information
OpenAIPromptExecutionSettings settings = new() { FunctionChoiceBehavior = FunctionChoiceBehavior.Auto() };
KernelArguments arguments = new(settings);
Console.WriteLine(await kernel.InvokePromptAsync("What is the Semantic Kernel? Include citations to the relevant information where it is referenced in the response.", arguments));
Függvényhívás a Bing szöveges keresésének és szűrésének használatával
A szakasz utolsó mintája bemutatja, hogyan használható szűrő függvényhívással.
Ebben a mintában csak a Microsoft Developer Blogs webhely keresési eredményei jelennek meg.
Létrejön a(z) TextSearchFilter egy példánya, és a(z) devblogs.microsoft.com webhelyhez való illesztéshez egy egyenlőségi záradék lesz hozzáadva.
Ezt a szűrőt akkor használja a rendszer, ha a függvényt a rendszer meghívja a modelltől érkező függvényhívási kérésre válaszul.
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
using Microsoft.SemanticKernel.Data;
using Microsoft.SemanticKernel.Plugins.Web.Bing;
// Create a kernel with OpenAI chat completion
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddOpenAIChatCompletion(
modelId: "gpt-4o",
apiKey: "<Your OpenAI API Key>");
kernelBuilder.Services.AddSingleton<ITestOutputHelper>(output);
kernelBuilder.Services.AddSingleton<IFunctionInvocationFilter, FunctionInvocationFilter>();
Kernel kernel = kernelBuilder.Build();
// Create a search service with Bing search
var textSearch = new BingTextSearch(apiKey: "<Your Bing API Key>");
// Build a text search plugin with Bing search and add to the kernel
var filter = new TextSearchFilter().Equality("site", "devblogs.microsoft.com");
var searchOptions = new TextSearchOptions() { Filter = filter };
var searchPlugin = KernelPluginFactory.CreateFromFunctions(
"SearchPlugin", "Search Microsoft Developer Blogs site only",
[textSearch.CreateGetTextSearchResults(searchOptions: searchOptions)]);
kernel.Plugins.Add(searchPlugin);
// Invoke prompt and use text search plugin to provide grounding information
OpenAIPromptExecutionSettings settings = new() { FunctionChoiceBehavior = FunctionChoiceBehavior.Auto() };
KernelArguments arguments = new(settings);
Console.WriteLine(await kernel.InvokePromptAsync("What is the Semantic Kernel? Include citations to the relevant information where it is referenced in the response.", arguments));
Hamarosan
Hamarosan továbbiak is lesznek.
Hamarosan
Hamarosan továbbiak is lesznek.