MySQL是一种开源的关系型数据库管理系统(RDBMS),广泛应用于各种规模的应用程序中。它是由瑞典公司MySQL AB开发并维护的,后来被Sun Microsystems收购,现在是Oracle公司的一部分。MySQL数据库以其高性能、可靠性和灵活性而闻名,被广泛用于Web应用程序、企业级应用程序和嵌入式系统中。

MySQL具有以下特点和优势:
MySQL是一种开源的关系型数据库管理系统(RDBMS),它是由瑞典MySQL AB公司开发的,并且现在由Oracle公司维护和支持。作为开源软件,MySQL遵循GNU通用公共许可证(GPL),这意味着用户可以免费使用、修改和分发MySQL。这使得MySQL成为许多开发者和组织的首选数据库解决方案,因为它提供了灵活性、可定制性和经济性。开发者可以根据自己的需求自由地修改和定制MySQL,并将其集成到他们的应用程序中。此外,MySQL具有良好的性能、可靠性和可扩展性,使其成为处理大量数据和高并发访问的理想选择。
想象一下,你正在为公司开发一个智能客服系统,产品经理突然提出需求:"用户问天气的时候,系统能不能自动调用天气API,而不是只会说'请稍等,我帮您查询'?"
本文将通过实战代码,教你如何让C#应用获得**"函数调用"**这一AI时代的核心能力,让你的程序不再是简单的问答机器人,而是真正具备执行能力的智能助手。
传统的AI对话系统存在一个致命缺陷:只能"说"不能"做"。
用户问:"明天需要穿雨衣吗?"
传统AI回答:"抱歉,我无法获取实时天气信息,请您查询天气预报。"
这种体验让用户感觉AI"很傻",明明知道用户需要什么,却无法主动帮助解决问题。而**Function Calling(函数调用)**技术的出现,彻底改变了这一现状。
让我们先看看如何创建一个能够主动获取天气信息的AI助手:
C#using System.ComponentModel;
using System.Text;
using Microsoft.Extensions.AI;
using OllamaSharp;
namespace SmartWeatherAssistant
{
internal class Program
{
static async Task Main(string[] args)
{
Console.OutputEncoding = Encoding.UTF8;
Console.InputEncoding = Encoding.UTF8;
// 🎯 关键点1:使用Description特性让AI理解函数用途
[Description("获取指定城市的当前天气情况,返回晴天或雨天")]
string GetCurrentWeather(
[Description("城市名称,如:北京、上海、广州")]
string city = "当前位置")
{
// 🔧 实际项目中,这里应该调用真实的天气API
var weather = Random.Shared.NextDouble() > 0.5 ? "晴天" : "雨天";
Console.WriteLine($"[系统] 正在获取{city}的天气信息...");
Console.WriteLine($"[结果] {city}当前天气:{weather}");
return $"{city}现在是{weather}";
}
// 🚀 初始化Ollama客户端(需要本地运行Ollama服务)
IChatClient client = new OllamaApiClient(
new Uri("http://localhost:11434"),
"qwen2.5:3b"); // 使用轻量级的3B模型
// 🔥 关键点2:启用函数调用功能
client = ChatClientBuilderChatClientExtensions
.AsBuilder(client)
.UseFunctionInvocation() // 这一行是魔法所在!
.Build();
// 🛠️ 配置可用的工具函数
ChatOptions options = new()
{
Tools = [AIFunctionFactory.Create(GetCurrentWeather)]
};
Console.WriteLine("🤖 智能天气助手已启动,请输入您的问题:");
// 💬 处理用户输入
var userInput = "明天北京需要穿雨衣吗?";
Console.WriteLine($"👤 用户:{userInput}");
Console.WriteLine("🤖 助手:");
// 🎬 流式响应,实时显示AI思考过程
var response = client.GetStreamingResponseAsync(userInput, options);
await foreach (var update in response)
{
Console.Write(update);
}
}
}
}

最近和几个朋友聊天,发现一个有趣的现象:90%的C#开发者都想在项目中加入AI功能,但80%的人觉得太复杂而放弃。
"调用OpenAI API要处理HTTP请求、token管理、错误重试..."
"接入本地模型要学Docker、API封装、流式处理..."
"老板催得紧,但光搭环境就要一周..."
如果你也有这些困扰,今天这篇文章将彻底改变你的想法。Microsoft.Extensions.AI 让AI集成变得像写Hello World一样简单,5行代码就能让你的应用具备AI对话能力!
1. 复杂的SDK集成
2. 繁琐的基础设施
3. 高昂的学习成本
Microsoft推出的 Extensions.AI 包就像是AI界的"万能适配器",一套代码,适配所有主流AI服务!
想象一下,你正在开发一个客服系统,需要AI来回答常见问题。传统方式可能需要几十行代码,现在只需要这样:
C#using Microsoft.Extensions.AI;
using OllamaSharp;
namespace AppMsAi
{
internal class Program
{
static async Task Main(string[] args)
{
// 🎯 关键点1:一行代码创建AI客户端
IChatClient client = new OllamaApiClient(
new Uri("http://localhost:11434"), // 本地Ollama服务
"qwen2.5:3b"); // 使用轻量级模型
// 🎯 关键点2:设置客服场景的上下文
List<ChatMessage> customerServiceContext = [
new(ChatRole.System, "你是一个专业的电商客服,友好且高效地解决用户问题"),
new(ChatRole.User, "我的订单什么时候能到?")
];
// 🎯 关键点3:获取AI回复
ChatResponse response = await client.GetResponseAsync(customerServiceContext);
Console.WriteLine($"AI客服回复:{response}");
}
}
}

在人工智能快速发展的今天,如何将AI技术与实际应用场景无缝融合,已成为开发者的热门话题。本文将详细介绍如何使用 Microsoft Semantic Kernel 构建一个智能、高效的天气查询应用,让开发者了解如何利用 AI 赋能传统应用。
Semantic Kernel(语义内核)是微软推出的一个开源 SDK,它允许开发者轻松地将大语言模型(LLM)与传统编程方法结合。通过插件机制,开发者可以让 AI 调用 .NET 代码中的方法,实现更智能的交互。
在现代 AI 应用开发中,函数调用是一项强大的功能,它允许 AI 模型直接与应用程序的功能进行交互。Microsoft Semantic Kernel 作为一个开源框架,提供了简单而强大的方式来集成这一能力。本文将详细介绍如何在 Semantic Kernel 中使用聊天完成(Chat Completion)进行函数调用,帮助开发者构建更智能、更实用的 AI 应用。
函数调用(Function Calling)允许 AI 模型识别何时应该调用预定义的函数,并以结构化的方式提供必要的参数。这使得 AI 能够:
在 Semantic Kernel 中,这一功能与大型语言模型(LLM)的能力无缝集成,使开发体验更加流畅。
首先,我们需要创建一个新的 C# 项目并安装必要的 NuGet 包:
