热门搜索:和平精英 原神 街篮2 

您的位置:首页 > > 教程攻略 > ai资讯 >C#对接火山引擎豆包API实现业务调用

C#对接火山引擎豆包API实现业务调用

来源:互联网 更新时间:2026-08-21 13:12

调用豆包v1 API时,需采用AK/SK鉴权方式:首先构造一个POST请求,在请求头中包含X-BC-Signature(采用HMAC-SHA256签名)、X-BC-Timestamp、Authorization等字段。然后在请求体中添加model、messages等必要字段。最后,异步发送该请求,并对返回的JSON响应进行解析。

C#对接火山引擎豆包API实现业务调用

要在C#项目中调用火山引擎豆包(Doubao)API完成实际业务逻辑,比如发送用户提问并获取大模型回复,必须正确构造HTTP请求、处理鉴权签名、解析JSON响应,并适配豆包API当前v1版本的接口规范。

准备Access Key与Secret Key

登录火山引擎控制台→进入「访问密钥」页面→创建新的「API密钥(AK/SK)」→复制Access Key ID和Secret Key值,保存到安全位置。这一步不可跳过,

【没有合法AK/SK将无法通过身份校验,所有请求返回401】

不要在代码中硬编码密钥。推荐使用.NET 6+的IConfiguration从appsettings.json或环境变量读取。

安装必要NuGet包

在项目中执行以下命令安装HttpClient相关依赖:

dotnet add package System.Net.Http.Json

dotnet add package Microsoft.Extensions.Http

dotnet add package Newtonsoft.Json

若使用.NET Core 3.1或.NET 5,需额外安装System.Text.Json(但建议升级至.NET 6+以获得原生支持)。

构建带签名的HTTP客户端

豆包API要求所有请求携带X-BC-Signature头,签名算法为HMAC-SHA256,密钥为Secret Key,原文为:HTTP方法 + n + 请求路径 + n + 时间戳(秒级Unix时间戳)+ n + JSON请求体(无空格)。

方法一:手动拼接签名

① 创建HttpRequestMessage实例,设置Method为POST,RequestUri为https://ark.cn-beijing.volces.com/api/v1/chat/completions;

② 调用DateTimeOffset.UtcNow.ToUnixTimeSeconds()获取当前时间戳,存入变量timestamp;

③ 将请求体对象序列化为紧凑JSON字符串(不带换行/缩进),例如Newtonsoft.Json.JsonConvert.SerializeObject(body, new JsonSerializerSettings { Formatting = Formatting.None });

④ 拼接签名原文:POSTn/api/v1/chat/completionsn{timestamp}n{jsonBody};

⑤ 使用HMACSHA256.ComputeHash计算签名值,再Base64编码,赋值给request.Headers.Add("X-BC-Signature", signature);

⑥ 同时添加X-BC-Timestamp头,值为timestamp字符串;

⑦ 添加Authorization头,格式为"Bearer {AccessKeyID}"。

方法二:使用最新SDK(推荐)

首先,下载火山引擎最新的C# SDK(volc-sdk-csharp)。接着,引用VolcEngine.SDK.Core和VolcEngine.SDK.Ark。然后,通过代码“ArkClient client = new ArkClient(accessKeyId, secretKey, "cn-beijing");”直接初始化。之后,便可调用“client.ChatCompletionsAsync(request)”来自动完成签名与重试逻辑。

构造符合豆包v1规范的请求体

请求体必须是application/json,且顶层字段严格匹配文档:model、messages、stream(可选)、max_tokens(可选)、temperature(可选)。

messages数组至少包含一个role为"user"的对象,content为非空字符串;不能出现role为system的条目(豆包v1暂不支持system prompt)。

示例body对象(用Newtonsoft.Json序列化):

{"model":"doubao-pro","messages":[{"role":"user","content":"你好,请用中文简单介绍你自己"}],"max_tokens":512,"temperature":0.7}

【model字段值必须与控制台开通的模型名称完全一致,大小写敏感,填错会返回400】

发起异步调用并解析响应

使用HttpClient.SendAsync(request)发送已签名请求,检查response.IsSuccessStatusCode是否为true。

若成功,调用await response.Content.ReadFromJsonAsync()反序列化;ChatResponse类需包含id、choices[0].message.content、usage等字段。

若失败,读取response.Content.ReadAsStringAsync()获取错误详情,常见错误码:400(参数错误)、401(签名失败)、429(QPS超限)、500(服务端异常)。

这一步操作起来很简单,直接把文件拖进去就行。

手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc