You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

259 lines
14 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "34fd7745",
"metadata": {
"language_info": {
"name": "polyglot-notebook"
},
"polyglot_notebook": {
"kernelName": "csharp"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div><div></div><div></div><div><strong>Installed Packages</strong><ul><li><span>Microsoft.Extensions.Configuration, 9.0.9</span></li><li><span>Microsoft.Extensions.Configuration.Binder, 9.0.9</span></li><li><span>Microsoft.Extensions.Configuration.CommandLine, 9.0.9</span></li><li><span>Microsoft.Extensions.Configuration.EnvironmentVariables, 9.0.9</span></li><li><span>Microsoft.Extensions.Configuration.Ini, 9.0.9</span></li><li><span>Microsoft.Extensions.Configuration.Json, 9.0.9</span></li><li><span>Microsoft.Extensions.Configuration.KeyPerFile, 9.0.9</span></li><li><span>Microsoft.Extensions.Configuration.UserSecrets, 9.0.9</span></li><li><span>Microsoft.Extensions.Configuration.Xml, 9.0.9</span></li><li><span>Microsoft.Extensions.DependencyInjection, 9.0.9</span></li><li><span>Microsoft.Extensions.Hosting, 9.0.9</span></li><li><span>Microsoft.Extensions.Http, 9.0.9</span></li><li><span>Microsoft.Extensions.Logging, 9.0.9</span></li><li><span>Microsoft.Extensions.Logging.Configuration, 9.0.9</span></li><li><span>Microsoft.Extensions.Logging.Console, 9.0.9</span></li><li><span>Microsoft.Extensions.Options, 9.0.9</span></li><li><span>Microsoft.Extensions.Options.ConfigurationExtensions, 9.0.9</span></li><li><span>Microsoft.SemanticKernel, 1.65.0</span></li><li><span>Microsoft.SemanticKernel.Connectors.AzureOpenAI, 1.65.0</span></li><li><span>Microsoft.SemanticKernel.Connectors.Chroma, 1.65.0-alpha</span></li><li><span>Microsoft.SemanticKernel.Connectors.DuckDB, 1.53.1-alpha</span></li><li><span>Microsoft.SemanticKernel.Connectors.Google, 1.65.0-alpha</span></li><li><span>Microsoft.SemanticKernel.Connectors.HuggingFace, 1.65.0-preview</span></li><li><span>Microsoft.SemanticKernel.Connectors.InMemory, 1.65.0-preview</span></li><li><span>Microsoft.SemanticKernel.Connectors.Kusto, 1.53.1-alpha</span></li><li><span>Microsoft.SemanticKernel.Connectors.Milvus, 1.65.0-alpha</span></li><li><span>Microsoft.SemanticKernel.Connectors.MistralAI, 1.65.0-alpha</span></li><li><span>Microsoft.SemanticKernel.Connectors.MongoDB, 1.65.0-preview</span></li><li><span>Microsoft.SemanticKernel.Connectors.Ollama, 1.65.0-alpha</span></li><li><span>Microsoft.SemanticKernel.Connectors.Onnx, 1.65.0-alpha</span></li><li><span>Microsoft.SemanticKernel.Connectors.OpenAI, 1.65.0</span></li><li><span>Microsoft.SemanticKernel.Connectors.PgVector, 1.65.0-preview</span></li><li><span>Microsoft.SemanticKernel.Connectors.Redis, 1.65.0-preview</span></li><li><span>Microsoft.SemanticKernel.Connectors.SqliteVec, 1.65.0-preview</span></li><li><span>Microsoft.SemanticKernel.Connectors.SqlServer, 1.65.0-preview</span></li><li><span>Microsoft.SemanticKernel.Connectors.Weaviate, 1.65.0-preview</span></li><li><span>NetEscapades.Configuration.Yaml, 3.1.0</span></li><li><span>System.Net.Http.Json, 9.0.9</span></li></ul></div></div>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"<think>\n",
"嗯,用户问的是“新中国首都是什么?”,首先我需要确认用户的问题是否正确。根据我的知识,中国的首都是北京,但用户可能想知道是否有其他信息,或者可能有其他误解。比如,有些人可能对中国的首都是北京有误解,或者想确认北京的地位。不过,根据历史,北京确实是中华人民共和国的首都,所以回答时需要明确这一点。\n",
"\n",
"接下来,我需要考虑用户可能的背景。如果是学生或学生群体,可能需要更详细的解释,但用户的问题比较直接,所以可能不需要深入。另外,用户可能想确认北京是否正确,或者是否还有其他首都。比如,有时候可能会有其他城市被误称为首都,但根据官方资料,北京是正确的。因此,回答时应该明确北京,并可能补充一些关于首都的重要性,比如地理位置、历史地位等,以增强信息的全面性。\n",
"\n",
"还要注意用户可能的潜在需求,比如他们可能在学习中国历史,或者需要了解首都的位置,所以解释时可以提到北京的地理位置,比如在华北地区,或者与周边城市的关系,但不需要太过复杂。另外,可能用户想知道北京的其他特点,比如人口、经济等,但问题直接问的是首都,所以不需要扩展。\n",
"\n",
"最后,确保回答准确,不添加未经证实的信息,保持简洁明了,符合用户的需求。\n",
"</think>\n",
"\n",
"中华人民共和国的首都是**北京**。北京不仅是中国的首都,也是世界文化与艺术的象征之一,拥有丰富的历史和文化遗产。它位于中国华北地区,是中华文明的重要发源地,也是国际文化交流的重要中心。\n",
"初始化完毕!\n"
]
}
],
"source": [
"/** 初始化文档\n",
" 全局共用文件,包括 Nuget包引用、全局类库引用、全局文件引用、全局命名空间引用、全局变量、全局方法、全局类定义等功能;\n",
" 在业务笔记中引用,执行其它单元格之前先执行一次。\n",
"*/\n",
"\n",
"//导入Nuget包\n",
"#r \"nuget:System.Net.Http.Json\"\n",
"#r \"nuget:Microsoft.Extensions.Http\"\n",
"#r \"nuget:Microsoft.Extensions.Hosting\"\n",
"#r \"nuget:Microsoft.Extensions.DependencyInjection\"\n",
"\n",
"#r \"nuget:Microsoft.Extensions.Logging\"\n",
"#r \"nuget:Microsoft.Extensions.Logging.Console\"\n",
"#r \"nuget:Microsoft.Extensions.Logging.Configuration\"\n",
"\n",
"#r \"nuget:Microsoft.Extensions.Configuration\"\n",
"#r \"nuget:Microsoft.Extensions.Configuration.Binder\"\n",
"#r \"nuget:Microsoft.Extensions.Configuration.Json\"\n",
"#r \"nuget:Microsoft.Extensions.Configuration.Ini\"\n",
"#r \"nuget:Microsoft.Extensions.Configuration.Xml\"\n",
"#r \"nuget:NetEscapades.Configuration.Yaml\"\n",
"#r \"nuget:Microsoft.Extensions.Configuration.KeyPerFile\"\n",
"#r \"nuget:Microsoft.Extensions.Configuration.UserSecrets\"\n",
"#r \"nuget:Microsoft.Extensions.Configuration.CommandLine\"\n",
"#r \"nuget:Microsoft.Extensions.Configuration.EnvironmentVariables\"\n",
"\n",
"#r \"nuget:Microsoft.Extensions.Options\"\n",
"#r \"nuget:Microsoft.Extensions.Options.ConfigurationExtensions\" \n",
"\n",
"#r \"nuget:Microsoft.SemanticKernel\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.OpenAI\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.AzureOpenAI\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.Google,*-*\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.Ollama,*-*\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.MistralAI,*-*\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.HuggingFace,*-*\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.Onnx,*-*\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.InMemory,*-*\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.SqliteVec,*-*\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.PgVector,*-*\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.MongoDB,*-*\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.SqlServer,*-*\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.Redis,*-*\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.DuckDB,*-*\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.Chroma,*-*\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.Milvus,*-*\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.Weaviate,*-*\"\n",
"#r \"nuget:Microsoft.SemanticKernel.Connectors.Kusto,*-*\"\n",
"\n",
"//导入文件\n",
"\n",
"//引入命名空间\n",
"using System.Collections;\n",
"using System.Collections.Immutable;\n",
"using System.Collections.Frozen;\n",
"using System.Collections.Generic;\n",
"using System.Collections.Specialized;\n",
"using System.Linq;\n",
"using System.Linq.Expressions;\n",
"using System.Net;\n",
"using System.Net.Mime;\n",
"using System.Net.Http;\n",
"using System.Net.Http.Headers;\n",
"using System.IO;\n",
"using System.IO.Pipelines;\n",
"using System.Data;\n",
"using System.Text;\n",
"using System.Text.Json;\n",
"using System.Threading;\n",
"using System.Threading.Tasks;\n",
"using System.Threading.Channels;\n",
"\n",
"using Microsoft.Extensions.Hosting;\n",
"using Microsoft.Extensions.DependencyInjection;\n",
"using Microsoft.Extensions.Options;\n",
"using Microsoft.Extensions.Configuration;\n",
"using Microsoft.Extensions.Configuration.Memory;\n",
"using Microsoft.Extensions.Configuration.Ini;\n",
"using Microsoft.Extensions.Configuration.Xml;\n",
"using Microsoft.Extensions.Configuration.Json;\n",
"using NetEscapades.Configuration.Yaml;\n",
"using Microsoft.Extensions.Configuration.KeyPerFile;\n",
"using Microsoft.Extensions.Configuration.UserSecrets;\n",
"using Microsoft.Extensions.Configuration.CommandLine;\n",
"using Microsoft.Extensions.Configuration.EnvironmentVariables;\n",
"\n",
"using Microsoft.Extensions.Logging;\n",
"using Microsoft.Extensions.Logging.Debug;\n",
"using Microsoft.Extensions.Logging.Console;\n",
"using Microsoft.Extensions.Logging.EventLog;\n",
"using Microsoft.Extensions.Logging.EventSource;\n",
"using Microsoft.Extensions.Logging.Configuration;\n",
"\n",
"using Microsoft.Extensions.AI;\n",
"using Microsoft.SemanticKernel;\n",
"using Microsoft.SemanticKernel.Functions;\n",
"using Microsoft.SemanticKernel.Services;\n",
"using Microsoft.SemanticKernel.Data;\n",
"using Microsoft.SemanticKernel.Connectors;\n",
"using Microsoft.SemanticKernel.Agents;\n",
"using Microsoft.SemanticKernel.Memory;\n",
"using Microsoft.SemanticKernel.Embeddings;\n",
"using Microsoft.SemanticKernel.ChatCompletion;\n",
"using Microsoft.SemanticKernel.Text;\n",
"using Microsoft.SemanticKernel.TextGeneration;\n",
"using Microsoft.SemanticKernel.TextToAudio;\n",
"using Microsoft.SemanticKernel.AudioToText;\n",
"using Microsoft.SemanticKernel.TextToImage;\n",
"using Microsoft.SemanticKernel.ImageToText;\n",
"using Microsoft.SemanticKernel.Connectors.Ollama;\n",
"using OllamaSharp;\n",
"\n",
"\n",
"//公用类、方法、变量\n",
"//公用类、方法、变量\n",
"public class OllamaOption\n",
"{\n",
" public string DefaultModel { get; set; } = \"qwen3:0.6b\";\n",
" public string ImageModel { get; set; }\n",
" public string EmbeddingModel { get; set; }\n",
" public string AudioModel { get; set; }\n",
" public string Address { get; set; } = \"http://localhost:11434\";\n",
" public Uri Endpoint { get { return new Uri(this.Address); } }\n",
" public string ServiceId { get; set; } = null;\n",
"}\n",
"\n",
"public class OpenAIOption\n",
"{\n",
" public string DefaultModel { get; set; } = \"qwen3:0.6b\";\n",
" public string ImageModel { get; set; }\n",
" public string EmbeddingModel { get; set; }\n",
" public string AudioModel { get; set; }\n",
" public string Address { get; set; } = \"http://localhost:11434/v1\";\n",
" public Uri Endpoint { get { return new Uri(this.Address); } }\n",
" public string ServiceId { get; set; } = null;\n",
"}\n",
"\n",
"//公开:配置管理\n",
"IConfigurationBuilder AppConfigBinder = new ConfigurationBuilder();\n",
"AppConfigBinder\n",
" .AddInMemoryCollection(null)\n",
" .AddJsonFile(\"config.json\", true, true)\n",
" .AddJsonFile($\"config.{System.Environment.GetEnvironmentVariable(\"DOTNET_MODIFIABLE_ASSEMBLIES\")}.json\", true, true)\n",
" //第三方或自定义配置源\n",
" .AddUserSecrets(\"SemanticKernelStudy\")\n",
" .AddEnvironmentVariables()\n",
" .AddCommandLine(cofigSource => { })\n",
" ;\n",
"\n",
"IConfiguration AppConfiguration = AppConfigBinder.Build();\n",
"\n",
"//可以直接从配置管理中获取配置\n",
"{\n",
" OllamaOption ollamaOption = new OllamaOption();\n",
" AppConfiguration.GetSection(\"OllamaOption\").Bind(ollamaOption);\n",
"\n",
" OllamaApiClient AppOllamaApiClient = new OllamaApiClient(ollamaOption.Endpoint, ollamaOption.DefaultModel);\n",
"\n",
" var o = AppConfiguration.GetValue<OllamaOption>(\"OllamaOption\");\n",
"}\n",
"\n",
"//公开IoC容器\n",
"IServiceCollection AppServices = new ServiceCollection();\n",
"AppServices.AddSingleton<IConfigurationBuilder>(AppConfigBinder);\n",
"AppServices.AddSingleton<IConfiguration>(AppConfiguration);\n",
"AppServices.AddOptions();\n",
"AppServices.Configure<OllamaOption>(AppServices.BuildServiceProvider().GetRequiredService<IConfiguration>().GetSection(\"OllamaOption\"));\n",
"AppServices.Configure<OpenAIOption>(AppServices.BuildServiceProvider().GetRequiredService<IConfiguration>().GetSection(\"OpenAIOption\"));\n",
"AppServices.AddScoped<OllamaApiClient>(implementationFactory: provider => \n",
"{\n",
" OllamaOption option = provider.GetRequiredService<IOptionsMonitor<OllamaOption>>().CurrentValue;\n",
"\n",
" var client = new OllamaApiClient(option.Endpoint, option.DefaultModel);\n",
"\n",
" return client;\n",
"});\n",
"\n",
"//使用例子\n",
"{\n",
" IChatCompletionService chatService = AppServices.BuildServiceProvider().GetRequiredService<OllamaApiClient>().AsChatCompletionService();\n",
"\n",
" ChatMessageContent response = await chatService.GetChatMessageContentAsync(\"新中国首都是什么?\").ConfigureAwait(false);\n",
" Console.WriteLine(response.Content);\n",
"}\n",
"\n",
"Console.WriteLine(\"初始化完毕!\");"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".NET (C#)",
"language": "C#",
"name": ".net-csharp"
},
"language_info": {
"name": "polyglot-notebook"
},
"polyglot_notebook": {
"kernelInfo": {
"defaultKernelName": "csharp",
"items": [
{
"aliases": [],
"languageName": "csharp",
"name": "csharp"
}
]
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}