使用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,用来进行数 ...
随机推荐
- (系列十二)Vue3+.Net8实现用户登录(超详细登录文档)
说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发). 该系统文章,我会尽量说的非常详细,做到不管新手.老手都能看懂. 说明:OverallAuth2 ...
- 设计模式【3.3】-- CGLIB动态代理源码解读
cglib 动态代理 cglib介绍 CGLIB 是一个开源项目,一个强大高性能高质量的代码生成库,可以在运行期拓展 Java 类,实现 Java 接口等等.底层是使用一个小而快的字节码处理框架 AS ...
- 从零开始学java(第一天)
上班日学习时间很短,而且很多事情会耽搁,就会写的比较少 近几期的笔记以复习为主,后面会逐渐拓展对我个人来说的新知识 1. 复习了一下typore的语法,方便以后记笔记用 # MarkDown学习(# ...
- 【Python】【爬虫】【爬狼】005_爬取数据处理-有的链接缺少了“http”的解决方案(not in)
我认为这一篇文章是没有意义的,说白了就是判断字符串是否包含指定内容. 爬图片链接的时候,发现了一个问题 有的链接缺了http 像我这种使用HTML表格输出的,本来是可以把图片链接显示为图片的,但是有的 ...
- bouncycastle(BC) 实现SM2国密加解密、签名、验签
https://www.cnblogs.com/dashou/p/14656458.html SM2国密加解密一个类就够了 <dependency> <groupId>org. ...
- 【转载】 一次生产环境的NOHTTPRESPONSEEXCEPTION异常的排查记录
https://www.freesion.com/article/41531004212/ 环境: jdk1.8+tomcat8+httpclient4.5.2 主要现象: 项目偶发出现org.apa ...
- ERROR: SSL peer shut down incorrectly错误解决(Android Studio)
错误信息:ERROR: SSL peer shut down incorrectly错误解决(Android Studio) 错误原因:android studio在下载"gradle-4. ...
- Python多分类Logistic回归详解与实践
在机器学习中,Logistic回归是一种基本但非常有效的分类算法.它不仅可以用于二分类问题,还可以扩展应用于多分类问题.本文将详细介绍如何使用Python实现一个多分类的Logistic回归模型,并给 ...
- Circos软件学习
circos 是一款perl 语言开发的画图软件,提供了染色体相关数据的一种可视化方式.其制作的图表精美,被科研工作者广泛使用.Circos可以对染色体相关数据进行可视化,以每条染色体为一个扇区,组成 ...
- Solution Set - 多项式杂题
0. 「OurOJ #46942」/「51nod #1824」染色游戏 Private link & Submission. 首先,显然有 \[f(t)=\sum_{i=0}^t\bi ...