您现在的位置是:首页 >其他 >C#联合DeepSeek实现快速应用网站首页其他

C#联合DeepSeek实现快速应用

狮子不白 2025-03-26 12:01:02
简介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);

            }

        }

    }

}

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。