.NET Core C#系列之 利用kernel_memory给AI上传文件提供知识

摘要:首先我们需要打开 Visual Studio 2022,然后创建一个8_KernelMemory_File名称控制台项目。打开项目文件Exe

首先我们需要打开 Visual Studio 2022,然后创建一个8_KernelMemory_File名称控制台项目。打开项目文件 Exe net8.0 _8_KernelMemory_File enable enable 添加OpenAIHttpClientHandler.cs public class OpenAIHttpClientHandler : HttpClientHandler { private readonly string _uri; public OpenAIHttpClientHandler(string uri) => _uri = uri.TrimEnd('/'); protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { UriBuilder uriBuilder; if (request.RequestUri?.LocalPath == "/v1/chat/completions") { uriBuilder = new UriBuilder(_uri + "/v1/chat/completions"); request.RequestUri = uriBuilder.Uri; } else if (request.RequestUri?.LocalPath == "/v1/embeddings") { uriBuilder = new UriBuilder(_uri + "/v1/embeddings"); } return await base.SendAsync(request, cancellationToken); } }打开Program.csusing _8_KernelMemory_File;using Microsoft.KernelMemory;var httpClientHandler = new OpenAIHttpClientHandler("https://api.token-ai.cn/");var key = "这里填写在https://api.token-ai.cn/创建的令牌";var embeddingModel = "text-embedding-3-small";var textModel = "gpt-3.5-turbo";var memory = new KernelMemoryBuilder .WithOpenAITextGeneration(new OpenAIConfig { APIKey = key, TextModel = textModel }, , new HttpClient(httpClientHandler)) .WithOpenAITextEmbeddingGeneration(new OpenAIConfig { APIKey = key, EmbeddingModel = embeddingModel, }, , false, new HttpClient(httpClientHandler)) .Build;Console.WriteLine("上传知识");var docId = await memory.ImportDocumentAsync("fastwiki.md");Console.WriteLine($"- Document Id: {docId}");Console.WriteLine("提问:介绍一下AIDotNet社区项目");var answer = await memory.AskAsync("介绍一下AIDotNet社区项目?", minRelevance: 0.5);Console.WriteLine("assistant:" + answer.Result);在项目中创建文件,注意记得将文件设置为复制到输出目录,然后添加以下内容:## AIDotNet.API是什么AIDotNet API 是一款强大的人工智能模型管理工具,其主要目的是为了实现多种AI模型的统一管理和使用。通过AIDotNet API,用户可以轻松地管理和使用众多AI模型,而且AIDotNet API兼容OpenAI的接口格式,使得使用更加方便。AIDotNet API提供了丰富的功能:1. 管理功能:支持用户管理,渠道管理以及token管理,简化了管理流程。2. 数据统计预览:可以清晰地看到各种数据的统计情况,帮助用户更好地了解使用情况。3. 日志查看:支持日志查看,方便用户跟踪和解决问题。4. 系统设置:可以根据需要进行各种系统设置。5. 外部Chat链接接入:支持接入外部Chat链接,提升交互体验。6. 支付宝购买账号余额:提供支付宝购买账号余额的功能,方便用户进行充值。此外,AIDotNet API还支持多种AI大模型,包括OpenAI、星火大模型、Claudia、智谱AI、Ollama、通义千问(阿里云)、AzureOpenAI以及腾讯混元大模型,满足了用户对各种AI模型的需求。AIDotNet API还支持多种数据库,包括SqlServer、PostgreSql、Sqlite以及MySql,用户可以根据自己的需要选择合适的数据库。## AIDotNet是什么组织?AIDotNet 是一群热爱DotNet的开源爱好者组成,为了让DotNet赋能AI,让AI轻松带入您的产品,我们成立了AIDotNet组织。拥有[fast-wiki](https://github.com/AIDotNet/fast-wiki),[Thor](https://github.com/AIDotNet/Thor), [HongJun](https://github.com/AIDotNet/HongJun), [AntSK](https://github.com/AIDotNet/AntSK)多个AI相关的开源项目。

运行项目,然后查看输出:

上传知识- Document Id: 50e250a908df4e1cb5697a7a1cda674e202406240322525610319提问:介绍一下AIDotNet社区项目assistant:AIDotNet是一个由DotNet开源爱好者组成的组织,旨在将人工智能赋能于DotNet,并让AI轻松应用于产品中。他们的开源项目包括fast-wiki, Thor, HongJun, AntSK等多个与人工智能相关的项目。其中AIDotNet API是一款强大的人工智能模型管理工具,提供了丰富的功能,包括管理功能、数据统计预览、日志查看、系统设置、外部Chat链接接入、支付宝购买账号余额等。此外,AIDotNet API支持多种AI大模型,包括OpenAI、星火大模型、Claudia、智谱AI、Ollama、通义千问(阿里云)、AzureOpenAI以及腾讯混元大模型。同时,AIDotNet API还支持多种数据库,如SqlServer、PostgreSql 、Sqlite以及MySql,用户可以根据自己的需要选择合适的数据库在这个示例中,我们使用KernelMemory给AI上传了一个文件,然后通过提问的方式获取了文件中的知识。这种方式可以让我们更加方便地将知识上传到AI中,然后通过提问的方式获取知识,提高了AI的使用效率。

来源:opendotnet

相关推荐