You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Semantic Kernel查询特定网站信息(附食堂菜单示例)

问题:如何让Semantic Kernel查询特定网站信息?

我知道可以通过WebSearchEnginePlugin结合Bing或Google连接器(比如BingConnector)让Semantic Kernel查询通用信息,代码示例如下:

kernel.ImportPluginFromObject(new WebSearchEnginePlugin(new BingConnector("SECRET")));

但想知道怎么让Semantic Kernel查询特定网站的信息?比如我希望它访问食堂网站,获取明天的午餐菜品,是否需要创建KernelFunction来执行查询并返回指定日期的菜单?


已实现的解决方案

受相关思路启发,我已经完成了解决方案,该方案可以从HTML和JSON文件中获取数据,能够回答菜单内容、食堂营业时间及员工信息,后续会发布到GitHub。代码示例如下:

kernel.ImportPluginFromType<GetCanteenPlugin>(); 
var settings = new OpenAIPromptExecutionSettings() {ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions}; 
var chatService = kernel.GetRequiredService<IChatCompletionService>();
var chatHistory = new ChatHistory();
while (true)
{
    Console.Write("Q: ");
    chatHistory.AddUserMessage(Console.ReadLine());
    var answer = await chatService.GetChatMessageContentAsync(chatHistory, settings, kernel);
    Console.WriteLine($"A: {answer}");
    chatHistory.Add(answer);
}

class GetCanteenPlugin
{
    [KernelFunction]
    public string GetMenu() {
        var htmlDoc = new HtmlDocument();
        htmlDoc.Load("CanteenWebsite/Menu.html");
        return htmlDoc.Text;
    }

    [KernelFunction]
    public string GetOpeningHours() {
        var htmlDoc = new HtmlDocument();
        htmlDoc.Load("CanteenWebsite/OpeningHours.html");
        return htmlDoc.Text;
    }
    
    [KernelFunction]
    public string GetStaff() {
        var staff = File.ReadAllText("CanteenWebsite/Staff.json");
        return staff;
    }
}

内容的提问来源于stack exchange,提问作者Simon K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:27:41