使用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,用来进行数 ...
随机推荐
- 九、FreeRTOS学习笔记-列表和列表项
列表和列表项的简介 列表是 FreeRTOS 中的一个数据结构,概念上和链表有点类似,列表被用来跟踪 FreeRTOS中的任务. 列表项就是存放在列表中的项目 列表相当于链表,列表项相当于节点,Fre ...
- Ollma本地部署Qwen2.5 14B(不使用docker)
部署机器硬件情况: 内存 :32GB 显卡 :3060 为什么不使用docker: 1.网上教程大多以docker为主 2.安装docker的时间太长,在等待的时候顺便尝试一下不用docker的部署 ...
- Golang框架之gin
gin是目前golang的主要web框架之一,之所以选择这个框架是因为其拥有高效的路由性能,并且有人长期维护,目前github上的star数已经破3W. [安装] go get -u github.c ...
- kettle 使用 CARTE 执行
在执行KETTLE 任务的时候,可以使用本地执行,或者使用carte server执行. 1.启动carte server .\Carte.bat localhost 8080 2.配置子服务器 这里 ...
- FileSaver 文件导出
1.前言 本节主要讲述如何将后台返回的JSON以文件的形式保存到本地 官方文档 兼容性(转载) Browser Constructs as Filenames Max Blob Size Depend ...
- 切换浏览器tab刷新实现
标签: js 缘起 最近在做一个活动需求,需求交互有跨项目,跳转到另一个项目里完成指定任务,再回来领取相应任务奖励,产品十分反感要求用户主动刷新浏览器才更新活动页的任务信息. 解决方案 方案1:如果项 ...
- [AI回答]Java中Long和long的区别,为什么在Springboot项目中一般使用Long
Long 和 long 的区别 在Java中,Long 和 long 是两个不同的概念,它们分别代表不同的数据类型: long: 这是一个 基本数据类型 (primitive type). 它用于存储 ...
- 【Python】【爬虫】【爬狼】004_正则规则模板及其应用
# 正则规则模板 与 应用(一) 先看这些视频,是在哪个div里面的 for datapage in soup.find_all("div", class_="lpic& ...
- Qt音视频开发20-海康sdk本地播放
一.前言 海康sdk中包含了MP4解码播放库,对应的API函数都是PlayM4开头的,顾名思义播放MP4,海康的视频默认可以保存成MP4文件,可以用通用的播放器来播放,这就是为啥前面好多篇文章讲到的各 ...
- 微信团队分享:微信后端海量数据查询从1000ms降到100ms的技术实践
本文由微信技术团队仇弈彬分享,原题"微信海量数据查询如何从1000ms降到100ms?",本文进行了内容修订和排版优化. 1.引言 微信的多维指标监控平台,具备自定义维度.指标的监 ...