您现在的位置是:首页 >其他 >C#联合DeepSeek实现快速应用网站首页其他
C#联合DeepSeek实现快速应用
简介c# deepseek
本章将作为一个技术人员分享如何结合它方便自己使用。
DeepSeek官网:https://www.deepseek.com
选择“开始对话”需要进行注册,但是比较醒目的一句话,让我一个普通研发人员感受到了来自世界的压力
选择“API开放平台”提示维修中(这只是暂时的,国人战胜小人只是时间问题)
回归正题,我们使用.net 6进行技术对接,调用API实现自己的助手,通过控制台命令方式编写一个简易的技术对接工具。
效果预计如下:
直接打开控制台对话,无需打开浏览器、app等应用
如果你不懂开发,但也期望使用这个工具,可以关注我,后续API网站恢复后我将工具编写完成,通过公众文章的方式提供下载链接。
在写完整的代码之前需要事先说明几个事情:
1、实现上面效果需要将控制台程序添加到环境变量,才可通过“运行”直接打开,否则需要输入较长的程序路径
2、需要在DeepSeek官网申请自己的apiKey,使用自己的key替换代码中“your_api_key_here”
3、DeepSeek每月1000次API请求或100小时的计算时间,超出免费额度后的收费通常按每千次请求或每小时计算时间收费。例如,每千次请求收费0.01或每小时计算时间收费0.01或每小时计算时间收费0.10
4、DeepSeek的api调用时可以使用连续发问模式,实现原理:将前序你与它对话的内容(含:你发送的,它回复的)全部作为参数发给它,它会根据上下文所有内容进行逻辑整理并反馈你需要的信息。
5、“运行”中输入的“s-art”是你应用程序的名称,如:s-art.exe
本次代码中解决了上述序号1的环境变量配置问题以及序号4的连续发问问题,但是首次启动需要使用管理员身份运行,它将自动检测是否存在环境变量配置并增加配置。
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
class Program
{
static async Task Main(string[] args)
{
// 获取当前程序的路径
string programPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
string programDirectory = Path.GetDirectoryName(programPath);
// 检查是否已经配置到 PATH 环境变量
if (!IsProgramInPath(programDirectory))
{
Console.WriteLine("程序未配置到 PATH 环境变量,正在自动配置...");
AddProgramToPath(programDirectory);
Console.WriteLine("配置完成!请重启命令行或终端以使更改生效。");
}
else
{
Console.WriteLine("程序已配置到 PATH 环境变量。");
}
// 调用 API 接口
Console.WriteLine("开始调用 API 接口...");
await CallApiAsync();
Console.WriteLine("按任意键退出...");
Console.ReadKey();
}
// 检查程序路径是否已经在 PATH 环境变量中
static bool IsProgramInPath(string programDirectory)
{
string pathVariable = Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine) ?? "";
return pathVariable.Contains(programDirectory);
}
// 将程序路径添加到 PATH 环境变量
static void AddProgramToPath(string programDirectory)
{
try
{
// 获取当前的 PATH 环境变量
string pathVariable = Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine) ?? "";
// 如果 PATH 中不包含程序路径,则添加
if (!pathVariable.Contains(programDirectory))
{
pathVariable += ";" + programDirectory;
Environment.SetEnvironmentVariable("PATH", pathVariable, EnvironmentVariableTarget.Machine);
Console.WriteLine("已将程序路径添加到 PATH 环境变量。");
}
}
catch (UnauthorizedAccessException)
{
Console.WriteLine("错误:需要管理员权限才能修改 PATH 环境变量。");
}
catch (Exception ex)
{
Console.WriteLine("发生错误:" + ex.Message);
}
}
// 调用 API 接口
static async Task CallApiAsync()
{
// API的URL
string apiUrl = "https://api.deepseek.com/v1/chat/completions";
// 你的API密钥
string apiKey = "your_api_key_here";
// 创建HttpClient实例
using (HttpClient client = new HttpClient())
{
// 设置请求头,包括API密钥
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
// 创建请求内容(JSON格式)
var requestBody = new
{
model = "deepseek-chat",
messages = new[]
{
new { role = "user", content = "你好" }
}
};
string jsonContent = JsonConvert.SerializeObject(requestBody);
var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
// 发送POST请求
HttpResponseMessage response = await client.PostAsync(apiUrl, content);
// 检查响应状态
if (response.IsSuccessStatusCode)
{
// 读取响应内容
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine("API 响应: " + responseBody);
}
else
{
Console.WriteLine("错误: " + response.StatusCode);
}
}
}
}
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。