使用C# 调用deepseek api接口,来实现正常访问
先上图,结果如图

先去官方网站充值api费用,默认
对应的C#代码封装
1 public class DeepSeekHelper
2 {
3 private static readonly HttpClient client = new HttpClient();
4 private const string ApiEndpoint = "https://api.deepseek.com/v1/chat/completions";
5 private static readonly string apiKey = "你的apikey";
6 public static async Task<string> CallDeepSeekAPI(string userQuestion)
7 {
8 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
9 try
10 {
11 // 设置请求头
12 client.DefaultRequestHeaders.Clear();
13 client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
14 client.DefaultRequestHeaders.Add("Accept", "application/json");
15
16 // 构建请求体
17 var requestBody = new
18 {
19 model = "deepseek-reasoner", // 根据实际模型调整
20 messages = new[]
21 {
22 new
23 {
24 role = "user",
25 content = userQuestion
26 }
27 },
28 temperature = 0.7
29 };
30
31 // 序列化请求体
32 //var jsonContent = JsonSerializer.Serialize(requestBody);
33 var jsonContent = JsonConvert.SerializeObject(requestBody);
34 var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
35
36 // 发送请求
37 var response = await client.PostAsync(ApiEndpoint, content);
38
39 // 处理响应
40 if (!response.IsSuccessStatusCode)
41 {
42 throw new Exception($"API请求失败: {response.StatusCode}");
43 }
44
45 var responseContent = await response.Content.ReadAsStringAsync();
46 var resultModel = JsonConvert.DeserializeObject<DeepSeekResponse>(responseContent);
47 if (resultModel != null && resultModel.Choices.Count > 0)
48 return resultModel.Choices[0].Message.Content;
49 return responseContent;
50 }
51 catch (Exception ex)
52 {
53 // 处理异常
54 return $"调用API时发生错误: {ex.Message}";
55 }
56 }
57 }
58
59
60
61 public class DeepSeekResponse
62 {
63 public string Id { get; set; }
64 public string Object { get; set; }
65 public long Created { get; set; }
66 public string Model { get; set; }
67 public List<Choice> Choices { get; set; }
68 public Usage Usage { get; set; }
69 public string SystemFingerprint { get; set; }
70
71 // 重写ToString方法以便更好地显示对象信息
72 public override string ToString()
73 {
74 return $"DeepSeekResponse(Id={Id}, Object={Object}, Created={Created}, Model={Model}, Choices={string.Join(", ", Choices)}, Usage={Usage}, SystemFingerprint={SystemFingerprint})";
75 }
76 }
77
78 public class Choice
79 {
80 public int Index { get; set; }
81 public Message Message { get; set; }
82 // 其他Choice相关的属性...
83
84 // 重写ToString方法以便更好地显示Choice信息(这里仅展示Index和Message作为示例)
85 public override string ToString()
86 {
87 return $"Choice(Index={Index}, Message={Message})";
88 }
89 }
90
91 public class Message
92 {
93 public string Role { get; set; }
94 public string Content { get; set; }
95 // 其他Message相关的属性...
96 }
97
98 public class Usage
99 {
100 public int PromptTokens { get; set; }
101 public int CompletionTokens { get; set; }
102 public int TotalTokens { get; set; }
103 // 其他Usage相关的属性,包括嵌套的字典等,可以根据需要添加
104 }
调用示例
private async void SendButton_Click(object sender, RoutedEventArgs e)
{
string requestText = RequestTextBox.Text;
if (!string.IsNullOrWhiteSpace(requestText))
{
try
{ string responseData = await DeepSeekHelper.CallDeepSeekAPI(requestText); // await new DeepSeekApi().CallDeepSeekAPI(chatRequest);
ResponseTextBox.Text = responseData;
}
catch (Exception ex)
{
ResponseTextBox.Text = $"Error: {ex.Message}";
}
}
else
{
MessageBox.Show("Please enter a request.");
}
}
常见问题:
1 发送请求时出错 InnerException = {"请求被中止: 未能创建 SSL/TLS 安全通道。"}
指定使用TLS1.2加密协议,添加如下代码
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
2 收到内容为空白
服务器繁忙,请把deepseek-chat模型切换到deepseek-reasoner 试试,或者换个时间再次尝试.
模型区别如下.代码中默认使用了reasoner模型,俗称满血版.
默认账户赠送10元余额.


使用C# 调用deepseek api接口,来实现正常访问的更多相关文章
- Http下的各种操作类.WebApi系列~通过HttpClient来调用Web Api接口
1.WebApi系列~通过HttpClient来调用Web Api接口 http://www.cnblogs.com/lori/p/4045413.html HttpClient使用详解(java版本 ...
- 关于python调用zabbix api接口
因公司业务需要,引进了自动化运维,所用到的监控平台为zbbix3.2,最近正在学习python,计划使用python调用zabbix api接口去做些事情,如生成报表,我想最基本的是要取得zabbix ...
- WebApi系列~通过HttpClient来调用Web Api接口
回到目录 HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api ...
- WebApi系列~通过HttpClient来调用Web Api接口~续~实体参数的传递
回到目录 上一讲中介绍了使用HttpClient如何去调用一个标准的Web Api接口,并且我们知道了Post,Put方法只能有一个FromBody参数,再有多个参数时,上讲提到,需要将它封装成一个对 ...
- 通过HttpClient来调用Web Api接口
回到目录 HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api ...
- 【WebApi】通过HttpClient调用Web Api接口
HttpClient是一个封装好的类,它在很多语言中都有被实现,现在HttpClient最新的版本是4.5. 它支持所有的http方法,自动转向,https协议,代理服务器. 一.Api接口参数标准化 ...
- Java 调用Restful API接口的几种方式--HTTPS
摘要:最近有一个需求,为客户提供一些Restful API 接口,QA使用postman进行测试,但是postman的测试接口与java调用的相似但并不相同,于是想自己写一个程序去测试Restful ...
- python 调用zabbix api接口实现主机的增删改查
python程序调用zabbix系统的api接口实现对zabbix_server端主机的增删改查,使用相关功能时候,需要打开脚本中的相关函数. 函数说明: zabbixtools() 调用zabbi ...
- 大叔也说Xamarin~Android篇~调用远程API接口,发POST请求
回到目录 Xamarin我们在上节已经教大家如何去部署它的环境了,今天来说一个实际的例子,使用android客户调用.net web api的一个接口,并发送POST请求,当服务端回到请求后做出响应, ...
- 通过HttpClient来调用Web Api接口~续~实体参数的传递
并且我们知道了Post,Put方法只能有一个FromBody参数,再有多个参数时,上讲提到,需要将它封装成一个对象进行传递,而这讲主要围绕这个话题来说,接口层添加一个新类User_Info,用来进行数 ...
随机推荐
- java中的集合包简要分析
1.集合包 集合包是java中最常用的包,它主要包括Collection和Map两类接口的实现. 对于Collection的实现类需要重点掌握以下几点: 1)Collection用什么数据结构实现? ...
- re模块 函数模式详解
re模块 python爬虫过程中,实现页面元素解析的方法很多,正则解析只是其中之一,常见的还有BeautifulSoup和lxml,它们都支持网页HTML元素解析,re模块提供了强大的正则表达式功能 ...
- input输入框与button按钮之间存在空隙
出现空隙是写代码的时候换行导致的,给input框加上float:left 可解决
- pip之加速
开发的时候, 经常会遇到使用pip安装某个包的时候很慢,甚至安装失败的情况, 当然可以设置--default-timeout=100方法来设置超时时间(默认是15秒),但是并不能解决实质问题.需要进行 ...
- 语音转文字-Microsoft Azure Speech Service与Web Speech API实战
简介 在现代技术驱动的世界中,语音识别已成为人机交互的重要方式.Microsoft Azure Speech Service 提供了强大的语音转文本功能,允许开发者轻松地将语音数据转换为文本.本文将指 ...
- influxdb数据库结构小结
转载请注明出处: InfluxDB 是一个开源的时序型数据库,它的数据主要存储在三个文件夹中:data.meta 和 wal. data 文件夹:这个文件夹存储的是 InfluxDB 的数据文件,也称 ...
- 金仓数据库数据迁移实战:从MySQL到KES的顺利迁移
今天我们将开始实践金仓数据库的数据迁移功能.在此之前,我们一直使用的是简化版的 Docker 镜像,这个版本并没有集成可视化操作工具.因此,为了更方便地进行后续的操作,我们需要额外下载一个 Windo ...
- 深入理解 Task.Delay 的定时精度及其影响因素
1. 原因 在日常开发中,Task.Delay 是一个常用的异步延迟方法.然而,Task.Delay 的定时并不总是非常准确.例如: 系统负载 Task.Delay 的定时精度可能会受到系统负载的影响 ...
- 解密prompt系列44. RAG探索模式?深度思考模式?
前一阵多步RAG的风吹入了工业界,kimi推出了探索版本,各应用都推出了深度搜索,You.COM更是早就有了Genius的多步模式.其实都是类似multi-hop RAG的实现.之前学术界在讨论mul ...
- 小程序,用户授权手机号,node需要检验和解析
1. 第一步需要先在小程序api文档中下载对应语言的解密算法,解压之后就可以看到 https://developers.weixin.qq.com/miniprogram/dev/framework/ ...