C# 控制台接入DeepSeek

创建控制台应用,替换下边核心代码,或者全替换。记得将apikey 替换为你自己的apikey
 

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.IO;
using System.Threading;
using System.Net.Http.Headers;

class Program
{
    private static readonly string apiKey = "apikey";
    private static readonly string apiUrl = "https://api.deepseek.com/v1/chat/completions";

    static async Task Main(string[] args)
    {
        while (true)
        {
            Console.WriteLine("请输入您的问题:");
            var question = Console.ReadLine();
            if (question.ToLower() == "exit")
            {
                break;
            }
            if (string.IsNullOrEmpty(question.Trim()))
            {
               continue; 
            }
            await SendToDeepSeek(question);
            Console.WriteLine("\n\n");
        }
    }

    static async Task SendToDeepSeek(string question)
    {
        var requestData = new
        {
            model = "deepseek-chat",
            messages = new[]
            {
                new { role = "user", content = question }
            },
            stream = true,  // 添加流式传输参数
            max_tokens = 8192
        };

        try
        {
            await CallDeepSeekAPIStreaming(requestData);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"\nError: {ex.Message}");
        }
    }

    static async Task CallDeepSeekAPIStreaming(object requestData)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            var jsonContent = JsonConvert.SerializeObject(requestData);
            var httpContent = new StringContent(jsonContent, Encoding.UTF8, "application/json");

            using (var request = new HttpRequestMessage(HttpMethod.Post, apiUrl)
            {
                Content = httpContent
            })
            using (var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead))
            using (var stream = await response.Content.ReadAsStreamAsync())
            using (var reader = new StreamReader(stream))
            {
                while (!reader.EndOfStream)
                {
                    var line = await reader.ReadLineAsync();
                    if (string.IsNullOrWhiteSpace(line)) continue;

                    // 处理事件流格式
                    if (line.StartsWith("data: "))
                    {
                        var jsonData = line.Substring(6).Trim();
                        if (jsonData == "[DONE]") break;

                        var chunk = JsonConvert.DeserializeObject<StreamChatResponse>(jsonData);
                        var content = chunk?.choices?.FirstOrDefault()?.delta?.content;

                        if (!string.IsNullOrEmpty(content))
                        {
                            Console.Write(content);
                            // 若需要模拟逐字效果,可添加延迟
                            await Task.Delay(50);
                        }
                    }
                }
            }
        }
    }

    public class StreamChatResponse
    {
        public Choice[] choices { get; set; }
        public class Choice
        {
            public Delta delta { get; set; }
        }
        public class Delta
        {
            public string content { get; set; }
        }
    }
}

### 关于在C#中使用DeepSeek 为了在C#环境中利用DeepSeek的功能,开发者可以遵循一系列指导来集成并调用DeepSeek的服务。创建一个新的.NET项目之后,安装所需的NuGet包是必不可少的操作之一[^1]。 #### 安装必要的NuGet包 对于希望快速上手的开发者来说,可以通过Visual Studio或者命令行工具dotnet CLI来进行NuGet包的管理。下面是一个简单的例子展示如何通过CLI添加所需依赖: ```bash dotnet add package DeepSeek.Client --version 1.0.0 ``` 这一步骤确保了项目的环境已经准备好调用DeepSeek API所必需的基础组件。 #### 编写代码示例 一旦完成了前期准备,在实际应用中就可以按照如下方式构建请求并向DeepSeek发送数据获取响应。这里给出一段基本的例子用于说明如何初始化客户端以及执行查询操作: ```csharp using System; using DeepSeek.Client; class Program { static async Task Main(string[] args) { var client = new DeepSeekClient("your-api-key-here"); string promptText = "请解释什么是C#?"; var response = await client.GenerateTextAsync(promptText); Console.WriteLine(response.Text); } } ``` 上述代码片段展示了怎样设置`DeepSeekClient`对象,并传入API密钥作为认证凭证;接着定义了一个提示字符串`promptText`,最后异步地向服务端发起文本生成功能的调用并将返回的结果打印出来。 #### 控制成本与优化性能 值得注意的是,除了技术实现外,了解DeepSeek所提供的不同计费方案同样重要。合理规划资源分配可以帮助团队有效降低运营开支的同时提高效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值