Semantic Kernel:接入azure中的deepseek-r1

news/2025/3/3 21:41:07/文章来源:https://www.cnblogs.com/axzxs2001/p/18746273

  SemanticKernel已经支持deepseek-r1了,官方的Blog地址是https://devblogs.microsoft.com/semantic-kernel/using-deepseek-models-in-semantic-kernel,同时给出了接入的Demo,遗憾的是deepseek不支持API的充值,没有办法测试。

  办法总比困难多,正好微软现在支持在Azure部署deepseek-r1了,具体部署方法官方有具体的方式方法,见下面的url:https://azure.microsoft.com/en-us/blog/deepseek-r1-is-now-available-on-azure-ai-foundry-and-github/

  与此同时,Azure上的给Demo如下:

var apiKey = File.ReadAllText("C:/gpt/deepseekkey.txt");
var handler = new HttpClientHandler(){ClientCertificateOptions = ClientCertificateOption.Manual,ServerCertificateCustomValidationCallback =(httpRequestMessage, cert, cetChain, policyErrors) => { return true; }};
using (var client = new HttpClient(handler))
{var requestBody = @"{""messages"": [                 {""role"": ""user"",""content"": ""你是谁?""}],""max_tokens"": 2048}";client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);client.BaseAddress = new Uri("https://DeepSeek-R1-iwztj.eastus2.models.ai.azure.com/chat/completions");var content = new StringContent(requestBody);content.Headers.ContentType = new MediaTypeHeaderValue("application/json");HttpResponseMessage response = await client.PostAsync("", content);if (response.IsSuccessStatusCode){string result = await response.Content.ReadAsStringAsync();var ent = System.Text.Json.JsonSerializer.Deserialize<ChatCompletionResponse>(result, new System.Text.Json.JsonSerializerOptions { PropertyNameCaseInsensitive = true });foreach (var choice in ent.Choices){Console.WriteLine("Result: {0}", choice.Message.Content);}}else{Console.WriteLine(string.Format("The request failed with status code: {0}", response.StatusCode));Console.WriteLine(response.Headers.ToString());Console.WriteLine("错误");}
}public class ChatCompletionResponse
{public List<Choice> Choices { get; set; }public long Created { get; set; }public string Id { get; set; }public string Model { get; set; }public string Object { get; set; }public List<PromptFilterResult> PromptFilterResults { get; set; }public Usage Usage { get; set; }
}public class Choice
{public ContentFilterResults ContentFilterResults { get; set; }public string FinishReason { get; set; }public int Index { get; set; }public Message Message { get; set; }
}public class ContentFilterResults
{public FilterStatus Hate { get; set; }public FilterStatus SelfHarm { get; set; }public FilterStatus Sexual { get; set; }public FilterStatus Violence { get; set; }
}public class FilterStatus
{public bool Filtered { get; set; }public string Severity { get; set; }
}public class Message
{public string Content { get; set; }public string ReasoningContent { get; set; }public string Role { get; set; }public object ToolCalls { get; set; }
}public class PromptFilterResult
{public int PromptIndex { get; set; }public ContentFilterResults ContentFilterResults { get; set; }
}public class Usage
{public int CompletionTokens { get; set; }public int PromptTokens { get; set; }public object PromptTokensDetails { get; set; }public int TotalTokens { get; set; }
}

结果如下:

 换成SK的对接方式如下:

var apiKey = File.ReadAllText("C:/gpt/deepseekkey.txt");
var chatCompletionService = new OpenAIChatCompletionService(endpoint: new Uri("https://DeepSeek-R1-iwztj.eastus2.models.ai.azure.com/"),apiKey: apiKey,modelId: "deepseek-chat"
);
var chatHistory = new ChatHistory();
chatHistory.AddUserMessage("你好,你是谁?");
var reply = await chatCompletionService.GetChatMessageContentAsync(chatHistory);
Console.WriteLine(reply);

结果如下:

   文章来源微信公众号

  想要更快更方便的了解相关知识,可以关注微信公众号 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/892243.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#中的Channel

在 .NET 的异步编程中,System.Threading.Channels 提供了一种强大的方式来处理生产者-消费者模式,尤其是当我们要在不同的任务或服务之间传递数据时。这篇文章我们就来聊聊 UnboundedChannelOptions 和 BoundedChannelOptions 这两个类,以及它们的使用场景和区别。代码背景介…

Kimi/DeepSeek最新论文MoBA与NSA阅读

From:https://www.big-yellow-j.top/posts/2025/02/21/Kimi-DS-Paper.html DeepSeek最新论文:Native Sparse Attention: Hardware-Aligned and Natively Trainable Sparse Attention以及 Kimi最新论文MOBA: MIXTURE OF BLOCK ATTENTION FOR LONG-CONTEXT LLMS这几篇文章都是针…

Windows 剪贴板 编程原理引入

前言 不得不说上三休四的生活就是舒服,我都有精力提升自己了。 本文将基于自己在生活中遇到的现象进行探索,因此问题引入对自己较为重要,读者可以跳过。 文章主要探讨剪贴板格式问题,即下面的链接。https://learn.microsoft.com/zh-cn/windows/win32/dataxchg/standard-cli…

.NET9中基于策略角色验证的包冲突

今天在.NET项目中,使用基于策略角色的鉴权时,遇到一个401的问题,场景如下:Program.cs代码如下:using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Tokens; usin…

yolov5预处理

1.yolov5预处理流程1.等比缩放与填充:将输入图像等比缩放到目标尺寸(如640640),并在多余部分填充灰条,保持图像的宽高比不变。这一过程也被称为“letterbox”。  2.颜色空间转换:将图像从BGR格式转换为RGB格式(OpenCV默认读取为BGR)。  3.归一化:将像素值从[0, 25…

.NET9中使用Options

选项模式在 ASP.NET Core 中使用类来提供对相关配置设置的强类型访问。通过将配置设置隔离到单独的类,应用程序遵循封装和关注点分离的原则。封装确保依赖于配置的类仅依赖于其使用的设置;关注点分离则确保应用的不同部分的设置互不依赖或耦合。此外,选项模式还提供了验证配…

Semantic Kernel:OpenAPI的Plugin

SK的插件,能让AI功能如虎添翼。Plugin能让AI与本地功能和数据互动,使AI与应用的结合,并起到了很好的粘合剂作用。怎么能让Plugin本身和功能分离呢?调用API是一个很好的办法,比如下面是一个查询订单的功能,是一个mini API项目。using System.Text.Json.Serialization;var …

Semantic Kernel:Phi-4试用

微软在去年12月12日首次展示了Phi-4模型,该模型拥有140亿参数,但表现极为强大。在多项测试中表现优异:GPQA(研究生水平问答)和MATH数学基准测试中,Phi-4的表现超过了OpenAI的GPT-4o,并超越同类顶级开源模型Qwen 2.5 - 14B和Llama 3.3 - 70B。 在美国数学竞赛AMC测试中,…

2025/3/2 【栈与队列】LeetCode232. 用栈实现队列

232. 用栈实现队列 - 力扣(LeetCode) 代码随想录 (programmercarl.com) 思想:用下面的两个栈模拟队列 from collections import deque class MyQueue:def __init__(self):# in主要负责push,out主要负责popself.stackin = []self.stackout = []def push(self, x: int) -> …

Semantic Kernel:Process

Process(流程)是为实现特定业务目标而设计的步骤集合,通过提供服务或产品,为客户创造价值。每个流程由一系列有序的活动组成,这些活动共同完成一个整体目标,旨在提升效率、优化决策,并促进跨团队协作。 在Microsoft Semantic Kernel框架中,Process Framework是一种强大…

Semantic Kernel:新Agent代理

在之前的SemanticKernel中,有一篇关于Agent的文章,不过现在看来其中使用的包过时,所以这篇来更新一下。原文章如下:Semantic Kernel:Agent代理 桂素伟,公众号:桂迹Semantic Kernel:Agent代理原来项目引有的Nuget包如下,版本停留在了1.18.2,2024年9月4日   最新的Agen…

基于uniCloud开发的管理端部署

参考链接: https://doc.dcloud.net.cn/uniCloud/publish.html https://doc.dcloud.net.cn/uniCloud/hosting.html#使用 上传云函数前端网页托管勾选将编译后的资源部署到前端网页托管选项 配置自定义域名配置域名,根据提示在域名管理处添加解析将得到的cname值在域名解析出添…