运行本地oLLAMA-PHI3时调用GetStreamingChatMessageContentsAsync遇404错误求助
解决SemanticKernel调用Ollama出现404错误的思路
验证Ollama服务与模型状态
先确认Ollama服务在11434端口正常运行:访问http://localhost:11434/api/tags,检查是否能返回已拉取的模型列表,确保phi3:3.8b存在。也可以用命令ollama list查看本地模型,确认模型ID完全匹配代码中的值。使用SemanticKernel的Ollama专用集成包
原代码使用AddOpenAIChatCompletion对接Ollama,由于Ollama的API路径与OpenAI不一致,导致请求路径错误触发404。正确做法是安装Microsoft.SemanticKernel.Connectors.OllamaNuGet包,改用AddOllamaChatCompletion注册服务:using Microsoft.SemanticKernel; using Microsoft.SemanticKernel.ChatCompletion; using var httpClient = new HttpClient() { BaseAddress = new Uri("http://localhost:11434"), }; #pragma warning disable SKEXP0010 Kernel kernel = Kernel.CreateBuilder() .AddOllamaChatCompletion( modelId: "phi3:3.8b", httpClient: httpClient) .Build(); var aiChatService = kernel.GetRequiredService<IChatCompletionService>(); var chatHistory = new ChatHistory([new ChatMessageContent(AuthorRole.System, "你是一个C#编程助手")]); while (true) { Console.WriteLine("你的问题:"); var userPrompt = Console.ReadLine(); chatHistory.Add(new ChatMessageContent(AuthorRole.User, userPrompt)); Console.WriteLine("AI回复:"); var response = ""; await foreach (var item in aiChatService.GetStreamingChatMessageContentsAsync(chatHistory)) { Console.Write(item.Content); response += item.Content; } chatHistory.Add(new ChatMessageContent(AuthorRole.Assistant, response)); Console.WriteLine(); }(可选)手动修正API请求路径
若坚持使用OpenAI兼容模式,需修改HttpClient的请求路径——Ollama的聊天接口为/api/chat,而SemanticKernel默认使用OpenAI的/v1/chat/completions。可通过自定义HttpClient的消息处理程序重写请求路径,但这种方式不如专用集成包简便。
内容的提问来源于stack exchange,提问作者Gabriel Daliard
相关产品推荐
相关产品推荐

