当前位置: 首页 > news >正文

SpringAI使用OpenAI API格式调用DeepSeek服务

OpenAI API格式介绍

OpenAI API 的格式规范涵盖了请求结构、响应格式、认证方式及工具集成等核心维度,以下为结构化解析:

一、请求格式(Request Format)

1. 基础结构
  • HTTP 方法POST(主流接口如 /chat/completions/completions
  • 端点 URL:https://api.openai.com/v1/ + 具体接口路径(如 chat/completions
  • 请求头(Headers)
http Authorization: Bearer $OPENAI_API_KEYContent-Type: application/json
2. 核心参数
  • model(必需):指定模型,如 gpt-4ogpt-3.5-turbotext-davinci-003
  • messages(对话类接口必需):对话历史数组,包含以下角色:
    • system:设定模型行为(如 "You are a helpful assistant.")。
    • user:用户输入,支持文本或图像 URL(多模态模型需指定 type: "image_url")。
    • assistant:模型历史回复(可选)。
  • max_tokens:控制响应长度(如 2000)。
  • temperature:调节生成随机性(0~2,默认 1)。

二、响应格式(Response Format)

1. 标准 JSON 结构
{"id": "chatcmpl-123","object": "chat.completion","created": 1677652288,"model": "gpt-4o","choices": [{"index": 0,"message": {"role": "assistant","content": "北京今日天气晴朗,气温14-20°C。"},"finish_reason": "stop"}],"usage": {"prompt_tokens": 9,"completion_tokens": 12,"total_tokens": 21}
}
2. 关键字段解析
  • id:响应唯一标识符。
  • choices:结果数组,每个元素含:
    • index:结果序号(多结果时区分)。
    • message:包含 role(如 assistant)和 content
    • finish_reason:结束原因(如 stoplength)。
  • usage:Token 消耗统计。

三、认证与安全

1. API 密钥认证
  • 方式:通过请求头或环境变量传递密钥。
  • 环境变量配置
bash export OPENAI_API_KEY="sk-..."
2. Azure Active Directory (AAD)
  • 适用场景:企业级安全需求。
  • 流程
  • 安装 azure-identity 库。
  • 通过 Azure CLI 登录并分配角色。
  • 代码中获取令牌:
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
os.environ["OPENAI_API_KEY"] = credential.get_token("https://cognitiveservices.azure.com/.default").token

SpringAI使用OpenAI API格式调用DeepSeek

1 注册DeepSeek账号创建API key

 

2 创建SpringBoot项目

版本要求
  • JDK 17
  • SpringBoot  3.4.2

2.1 配置pom.xml文件

pom.xml配置如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.4.2</version><relativePath/></parent><groupId></groupId><artifactId>platform-ai</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring-ai.version>1.0.0-M6</spring-ai.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- ollama 依赖 --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-ollama-spring-boot-starter</artifactId><version>${spring-ai.version}</version></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId><version>1.0.0-M6</version></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-spring-boot-autoconfigure</artifactId><version>1.0.0-M6</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies></project>

 2.2 配置application.yml

server:port: 9021
spring:ai:openai:base-url: https://api.deepseek.comapi-key: sk-your-api-keyenable: truechat:options:model: deepseek-chat

参数说明如下:

2.3 创建请求接收Controller

@Slf4j
@RestController
@RequestMapping("/ai")
public class ChatController {private final ChatClient chatClient;public ChatController(ChatClient.Builder chatClientBuilder) {this.chatClient = chatClientBuilder.build();}@GetMapping("/chat")public String chat(@RequestParam(value = "message") String message) {log.info("message: {}", message);return chatClient.prompt(message).call().content();}@GetMapping("/streamChat")public Flux<String> streamChat(@RequestParam(value = "message") String message) {log.info("stream-message: {}", message);return chatClient.prompt(message).stream().content();}
}

2.4 执行自测

http://www.xdnf.cn/news/247717.html

相关文章:

  • 《AIStarter安装部署全攻略:AI绘画/数字人项目快速上手指南(含Windows环境配置要点)》
  • *(解引用运算符)与 ++(自增运算符)的优先级
  • 开始一个vue项目
  • 《排序算法总结》
  • 60常用控件_QSpinBox的使用
  • [FPGA Video IP] Frame Buffer Read and Write
  • 一文读懂EMC VNX存储的Fast Cache(第二部分:对比)
  • 【RocketMQ】- 源码系列目录
  • 实习入职的总结
  • 前端八股 CSS 1
  • Chromium 134 编译指南 - Android 篇:从Linux版切换到Android版(六)
  • 2025智能体的发展趋势
  • 深⼊理解指针(8)
  • 简单的Qwen3的本地部署、分析与常见报错
  • Cribl 数据脱敏 更多方法 MASK (三)
  • 第十六届 -- 蓝桥杯Web开发大学组省赛个人复盘
  • ESP-ADF esp_dispatcher组件之audio_service子模块资源管理函数详解
  • RAGFlow上传3M是excel表格到知识库,提示上传的文件总大小过大
  • 基于Redis实现-附近商铺查询
  • UE实用地编插件Physical Layout Tool
  • MySQL | DQL语句-连接查询
  • linux 使用nginx部署next.js项目,并使用pm2守护进程
  • 加载ko驱动模块:显示Arm版本问题解决!
  • 小白如何入门Python爬虫
  • 【playwright】内网离线部署playwright
  • PMP-第九章 项目资源管理(一)
  • 机器学习实操 第一部分 机器学习基础 第8章 降维技术
  • 深度学习中卷积的计算复杂度与内存访问复杂度
  • 数字基带信号和频带信号的区别解析
  • ES6异步编程中Promise与Proxy对象