对接豆包大模型

ops/2025/3/28 7:43:52/

一、注册账号

豆包官网:点击跳转

二、账号认证

三、选择产品

四、选择模型

五、开通服务

六、获取密钥

API_KEY是作为HTTP的请求的鉴权信息使用,需要作为HTTP的Authorization请求字段使用。

七、请求参数

可以知道,如果想要接入AI大模型,请求需要包含以上2个参数。

1、model

必填项,需要填入接入点的ID,格式一般可以参考官方提供的接入案例,具体的流程如下:

2、messages

必填项,需要填写消息的对话列表,是固定的格式,其中需要包含role和content,如下:

role指的是角色,分为system和user,system指的是豆包大模型,user指的是用户,大模型和用户需要分别输入对应的对话内容。

对于system的content指的是提供给大模型的提示词,对于user的content指的是提供给大模型的对话内容。

注意:豆包大模型的HTTP的请求参数是以JSON格式进行构造的,所以可以参考接入示例:

八、接入方式

可以知道豆包大模型可以采用HTTP的POST请求来进行对话,由于使用的是主流的HTTP/1.1的协议版本,支持长连接,但是如果打算在请求中包含请求body的话,一般是需要在构造HTTP请求的时候使用头部字段Content-Length : xxx  xxx是一个整数,用于记录数据长度

一般HTTP/1.1的协议版本中,客户端和服务器都需要指定请求体/响应体的长度,方便双方读取指定长度的数据。

九、响应格式

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/udp.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>#include <netdb.h>#include "cJSON.h"  //包含该头文件//缓冲区大小
#define  BUFSIZE    4096//豆包大模型API的密钥,需要修改为自己的密钥
#define  API_KEY   "c379494b-0267-443d-8460-916d403fxxxx"  //HTTP服务的端口
#define  HTTP_PORT  80//豆包大模型的URL
#define SERVER_URL  "/api/v3/chat/completions"//豆包大模型的IP
#define SERVER_IP   "101.126.75.85"//豆包大模型的域名
#define SERVER_DOMAIN "ark.cn-beijing.volces.com"int main(int argc,char **argv)
{char recvbuf[BUFSIZE] ={0}; //存储响应内容char request[BUFSIZE] ={0}; //存储请求内容//1.创建TCP套接字,HTTP协议是基于TCP协议实现的int tcp_socket = socket(AF_INET, SOCK_STREAM, 0); if(-1 == tcp_socket){fprintf(stderr,"create tcp socket error,%s\n",strerror(errno));exit(-1);}//2.向豆包大模型的服务器发起连接请求struct sockaddr_in dest ={0};                           //IPv4地址格式的实例dest.sin_family = AF_INET;                              //IPv4协议族dest.sin_port   = htons(HTTP_PORT);                     //目标端口,需要转换为网络字节序dest.sin_addr.s_addr = inet_addr(SERVER_IP);            //目标地址,需要转换为网络字节序if(-1 == connect(tcp_socket,(struct sockaddr *)&dest,sizeof(dest))){fprintf(stderr,"connect error,%s\n",strerror(errno));exit(-2);}printf("connect ok\n");#if 1for(;;){//3.连接成功后,可以向豆包大模型服务器发起请求,需要构造请求内容char reqbody[512] = {0};  //用于存储请求体//构造请求体,作为POST请求的一部分sprintf(reqbody,"{\"model\": \"doubao-1-5-lite-32k-250115\",\"messages\": [{\"role\": \"system\",\"content\": \"你是人工智能助手.\"},""{\"role\": \"user\",\"content\": \"请告诉我如何在ubuntu下面安装搜狗输入法?\"}]}");//构造POST请求sprintf(request,"POST %s HTTP/1.1\r\n"                  //请求行"Host: %s\r\n"                          //主机域名"Content-Type: application/json\r\n"    //请求体类型"Content-Length: %d\r\n"                //请求体长度"Authorization: Bearer %s\r\n"          //鉴权信息"\n"                                    //空行"%s\r\n",                               //请求体内容SERVER_URL,SERVER_DOMAIN,strlen(reqbody),API_KEY,reqbody);//输出POST请求,用于调试             printf("%s\n",request);//4.发送POST请求send(tcp_socket,request,strlen(request),0); printf("send ok\n");    //5.等待豆包大模型的响应内容  先返回响应头部,再返回响应Bodysleep(8);   recv(tcp_socket,recvbuf,sizeof(recvbuf),0); //读取响应头部,默认会阻塞printf("[1]%s\n",recvbuf);                  //输出响应内容char *pstr = strstr(recvbuf,"{");   //6.把响应体中的JSON格式的字符串进行转换cJSON *root = cJSON_Parse(pstr);   //把存储了JSON格式的字符串转换为JSON格式char *string = cJSON_Print(root);     //把转换为JSON格式的数据以JSON格式输出printf("%s\n",string);                //测试是否成功的把字符串转换为JSON格式break;}
#endif   return 0;
}

完整demo:点击跳转

觉得有帮助的话,打赏一下呗。。

           

需要商务合作(定制程序)的欢迎私信!! 


http://www.ppmy.cn/ops/167381.html

相关文章

RAGFlow爬虫组件使用及ragflow vs dify 组件设计对比

上周末&#xff0c;两台电脑都失联了&#xff0c;一个是断网了&#xff0c;一个被我不小心关机。导致我两天没环境。只能整理&#xff0c;学点东西。 上周有个有个群友问我ragflow爬虫的没法使用的问题。幸好周六早上的时候实践了下。 使用网络爬虫 我搭建一个最简单的工作流…

yt-dlp工具下载视频使用方法

使用 yt-dlp 下载有土播视频时&#xff0c;可以很容易地同时下载字幕文件。 下面是详细操作说明&#xff1a; 一、下载视频并同时下载字幕&#xff1a; 基础命令&#xff1a; yt-dlp --write-subs 视频链接示例&#xff1a; yt-dlp --write-subs https://www.youdubo.com/wa…

【Java】Mybatis学习笔记

目录 一.搭建Mybatis 二.Mybatis核心配置文件解析 1.environment标签 2.typeAliases 3.mappers 三.Mybatis获取参数值 四.Mybatis查询功能 五.特殊的SQL执行 1.模糊查询 2.批量删除 3.动态设置表名 4.添加功能获取自增的主键 六.自定义映射ResultMap 1.配置文件处…

自然语言处理|Top-K 采样如何解锁文本生成的多样性?

一、引言 在自然语言处理&#xff08;NLP&#xff09;的文本生成领域&#xff0c;如何从语言模型输出的概率分布中选择下一个词&#xff0c;是决定生成文本质量与多样性的核心问题。语言模型通常会为词汇表中的每个词分配一个概率值&#xff0c;而采样策略则决定了如何基于这些…

OSG简介

OSG OpenSceneGraph (简称 OSG) 是一个开源的高性能3D图形库。 作用 它为开发者提供了一个强大的API&#xff0c;处理和渲染复杂的3D图形。 特点 OSG基于OpenGL构建&#xff0c;提供了对现代图形技术的支持&#xff0c;如着色器、纹理映射、光照模型等高级特性。 跨平台支…

使用 Flask 进行简单服务器改造的详细步骤和代码

以下是一个使用 Flask 进行简单服务器改造的详细步骤和示例代码。Flask 是一个轻量级的 Python Web 框架&#xff0c;非常适合快速搭建 Web 服务器。 1. 安装 Flask 首先&#xff0c;确保你已经安装了 Python&#xff0c;然后使用 pip 来安装 Flask&#xff1a; pip install…

List、Set 和 Map 的区别及常见实现类、线程安全集合(总结图表)

List、Set 和 Map 的区别 特性ListSetMap元素顺序有序无序&#xff08;部分实现有序&#xff09;无序&#xff08;部分实现有序&#xff09;元素唯一性允许重复不允许重复键唯一&#xff0c;值可重复访问方式通过索引通过元素本身通过键常见实现ArrayList, LinkedListHashSet,…

matrix-breakout-2-morpheus 靶机----练习攻略 【仅获取shell】

【此练习仅做到反弹shell】 1.靶机下载地址 https://download.vulnhub.com/matrix-breakout/matrix-breakout-2-morpheus.ova 2. 打开靶机&#xff0c;kali使用nmap扫描同C段的主机 找到靶机ip 确保靶机和kali网卡均为NAT模式 先查看kali的ip nmap 192.168.182.1/24 …