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

要在C#项目中调用火山引擎豆包(Doubao)API完成实际业务逻辑,比如发送用户提问并获取大模型回复,必须正确构造HTTP请求、处理鉴权签名、解析JSON响应,并适配豆包API当前v1版本的接口规范。
登录火山引擎控制台→进入「访问密钥」页面→创建新的「API密钥(AK/SK)」→复制Access Key ID和Secret Key值,保存到安全位置。这一步不可跳过,
不要在代码中硬编码密钥。推荐使用.NET 6+的IConfiguration从appsettings.json或环境变量读取。
在项目中执行以下命令安装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+以获得原生支持)。
豆包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)”来自动完成签名与重试逻辑。
请求体必须是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}
使用HttpClient.SendAsync(request)发送已签名请求,检查response.IsSuccessStatusCode是否为true。
若成功,调用await response.Content.ReadFromJsonAsync
若失败,读取response.Content.ReadAsStringAsync()获取错误详情,常见错误码:400(参数错误)、401(签名失败)、429(QPS超限)、500(服务端异常)。
这一步操作起来很简单,直接把文件拖进去就行。
腾讯ima怎么把微信内容一键导入知识库?
黄金价格不断创新高!黄金稳定币XAU、PAXG市值达11亿美元
腾讯ima怎么创建共享知识库?
CC币价格预测(2026-2035):Canton币今日价格走势+长期价格预测
新浪互联网热点小时报丨2026年07月26日16时_今日实时互联网热点速递
Celestia价格预测2026-2032:TIA币能否引领山寨币上涨行情?历史价格回顾
新浪机器学习热点小时报丨2026年07月25日18时_今日实时机器学习热点速递
比特币(BTC)核心周期指标复刻历史走势 价格或跌破5.8万美元关键支撑位
新浪人工智能热点小时报丨2026年07月30日18时_今日实时人工智能热点速递
WorkBuddy微信版怎么获得积分?
5000元起的鼠标哪个最值得入手?
蚂蚁庄园今日答案7月21日(今日已更新) 蚂蚁庄园今天正确答案是什么呢
车载冰箱重置到出厂设置几步?
短剧《史上最强洪荒修为》剧情介绍
kimi提示词专家使用方法新手指南
结婚家电首选:Leader懒人三筒Ultra热泵洗烘一体
腾讯ima知识库怎么分类管理?
短剧《仙人跳获透视,古玩玉器我全拿捏》剧情介绍
Windy卫星云图怎么看?云层变化识别技巧
一加手机如何设置三指长按屏幕局部截图
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc