先上图,结果如图

先去官方网站充值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接口,来实现正常访问的更多相关文章

  1. Http下的各种操作类.WebApi系列~通过HttpClient来调用Web Api接口

    1.WebApi系列~通过HttpClient来调用Web Api接口 http://www.cnblogs.com/lori/p/4045413.html HttpClient使用详解(java版本 ...

  2. 关于python调用zabbix api接口

    因公司业务需要,引进了自动化运维,所用到的监控平台为zbbix3.2,最近正在学习python,计划使用python调用zabbix api接口去做些事情,如生成报表,我想最基本的是要取得zabbix ...

  3. WebApi系列~通过HttpClient来调用Web Api接口

    回到目录 HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api ...

  4. WebApi系列~通过HttpClient来调用Web Api接口~续~实体参数的传递

    回到目录 上一讲中介绍了使用HttpClient如何去调用一个标准的Web Api接口,并且我们知道了Post,Put方法只能有一个FromBody参数,再有多个参数时,上讲提到,需要将它封装成一个对 ...

  5. 通过HttpClient来调用Web Api接口

    回到目录 HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api ...

  6. 【WebApi】通过HttpClient调用Web Api接口

    HttpClient是一个封装好的类,它在很多语言中都有被实现,现在HttpClient最新的版本是4.5. 它支持所有的http方法,自动转向,https协议,代理服务器. 一.Api接口参数标准化 ...

  7. Java 调用Restful API接口的几种方式--HTTPS

    摘要:最近有一个需求,为客户提供一些Restful API 接口,QA使用postman进行测试,但是postman的测试接口与java调用的相似但并不相同,于是想自己写一个程序去测试Restful ...

  8. python 调用zabbix api接口实现主机的增删改查

    python程序调用zabbix系统的api接口实现对zabbix_server端主机的增删改查,使用相关功能时候,需要打开脚本中的相关函数. 函数说明: zabbixtools()  调用zabbi ...

  9. 大叔也说Xamarin~Android篇~调用远程API接口,发POST请求

    回到目录 Xamarin我们在上节已经教大家如何去部署它的环境了,今天来说一个实际的例子,使用android客户调用.net web api的一个接口,并发送POST请求,当服务端回到请求后做出响应, ...

  10. 通过HttpClient来调用Web Api接口~续~实体参数的传递

    并且我们知道了Post,Put方法只能有一个FromBody参数,再有多个参数时,上讲提到,需要将它封装成一个对象进行传递,而这讲主要围绕这个话题来说,接口层添加一个新类User_Info,用来进行数 ...

随机推荐

  1. 九、FreeRTOS学习笔记-列表和列表项

    列表和列表项的简介 列表是 FreeRTOS 中的一个数据结构,概念上和链表有点类似,列表被用来跟踪 FreeRTOS中的任务. 列表项就是存放在列表中的项目 列表相当于链表,列表项相当于节点,Fre ...

  2. Ollma本地部署Qwen2.5 14B(不使用docker)

    部署机器硬件情况: 内存 :32GB 显卡 :3060 为什么不使用docker: 1.网上教程大多以docker为主 2.安装docker的时间太长,在等待的时候顺便尝试一下不用docker的部署 ...

  3. Golang框架之gin

    gin是目前golang的主要web框架之一,之所以选择这个框架是因为其拥有高效的路由性能,并且有人长期维护,目前github上的star数已经破3W. [安装] go get -u github.c ...

  4. kettle 使用 CARTE 执行

    在执行KETTLE 任务的时候,可以使用本地执行,或者使用carte server执行. 1.启动carte server .\Carte.bat localhost 8080 2.配置子服务器 这里 ...

  5. FileSaver 文件导出

    1.前言 本节主要讲述如何将后台返回的JSON以文件的形式保存到本地 官方文档 兼容性(转载) Browser Constructs as Filenames Max Blob Size Depend ...

  6. 切换浏览器tab刷新实现

    标签: js 缘起 最近在做一个活动需求,需求交互有跨项目,跳转到另一个项目里完成指定任务,再回来领取相应任务奖励,产品十分反感要求用户主动刷新浏览器才更新活动页的任务信息. 解决方案 方案1:如果项 ...

  7. [AI回答]Java中Long和long的区别,为什么在Springboot项目中一般使用Long

    Long 和 long 的区别 在Java中,Long 和 long 是两个不同的概念,它们分别代表不同的数据类型: long: 这是一个 基本数据类型 (primitive type). 它用于存储 ...

  8. 【Python】【爬虫】【爬狼】004_正则规则模板及其应用

    # 正则规则模板 与 应用(一) 先看这些视频,是在哪个div里面的 for datapage in soup.find_all("div", class_="lpic& ...

  9. Qt音视频开发20-海康sdk本地播放

    一.前言 海康sdk中包含了MP4解码播放库,对应的API函数都是PlayM4开头的,顾名思义播放MP4,海康的视频默认可以保存成MP4文件,可以用通用的播放器来播放,这就是为啥前面好多篇文章讲到的各 ...

  10. 微信团队分享:微信后端海量数据查询从1000ms降到100ms的技术实践

    本文由微信技术团队仇弈彬分享,原题"微信海量数据查询如何从1000ms降到100ms?",本文进行了内容修订和排版优化. 1.引言 微信的多维指标监控平台,具备自定义维度.指标的监 ...