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

Java调用大模型API实战指南

文章目录

    • 前言
    • 调用大模型的流程概述和基本原理
    • 获取 DeepSeek 的 API key
    • Java 实现调用大模型 API 的Demo
    • 进阶扩展建议

前言

随着大语言模型(如 OpenAI、DeepSeek、通义千问等)的发展,我们可以很方便地用 API 接口调用这些强大的智能助手。在 Java 项目中调用这些模型,可以实现智能问答、代码生成、摘要提取等功能。

参考 DeepSeek 官网文档:https://api-docs.deepseek.com/zh-cn/

调用大模型的流程概述和基本原理

流程概述:

  • 步骤 1:选择合适的大模型 API
  • 步骤 2:获取 API 访问密钥(API Key)
  • 步骤 3:配置 Java 项目依赖
  • 步骤 4:编写 Java 调用代码
  • 步骤 5:处理 API 响应并展示结果

基本原理:

绝大多数大模型服务商(如 OpenAI、DeepSeek、阿里、百度、讯飞等)都提供标准的 HTTP RESTful API。我们通过 POST 请求向这些接口发送问题(以 JSON 格式表示),然后接收并解析模型的回答。

获取 DeepSeek 的 API key

在这里插入图片描述

Java 实现调用大模型 API 的Demo

一、在 Maven 项目中添加以下依赖:

<dependencies><!-- OkHttp 用于发起 HTTP 请求 --><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.12.0</version></dependency><!-- fastjson 用于构建和解析 JSON --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.32</version></dependency>
</dependencies>

二、Java 完整代码:

public class DeepSeekChatExample {private static final String API_KEY = "sk-cvvd6dc3ce5f4aeb97c015106e8996d5"; // 写自己的!private static final String BASE_URL = "https://api.deepseek.com/v1/chat/completions";public static void main(String[] args) throws IOException {OkHttpClient client = new OkHttpClient.Builder().readTimeout(Duration.ofSeconds(60)) // 不设置容易超时.build();// 构建 messages 数组JSONArray messages = new JSONArray();JSONObject userMsg = new JSONObject();userMsg.put("role", "user");userMsg.put("content", "给我用java快速排序算法的代码");messages.add(userMsg);// 构建请求体JSONObject requestBody = new JSONObject();requestBody.put("model", "deepseek-chat");requestBody.put("messages", messages);requestBody.put("stream", false);// 构建 HTTP 请求Request request = new Request.Builder().url(BASE_URL).addHeader("Authorization", "Bearer " + API_KEY).addHeader("Content-Type", "application/json").post(RequestBody.create(requestBody.toJSONString(),MediaType.parse("application/json"))).build();// 发送请求try (Response response = client.newCall(request).execute()) {if (response.isSuccessful() && response.body() != null) {String responseBody = response.body().string();JSONObject jsonResponse = JSONObject.parseObject(responseBody);String content = jsonResponse.getJSONArray("choices").getJSONObject(0).getJSONObject("message").getString("content");System.out.println(content);} else {System.err.println("Request failed: " + response.code() + " " + response.message());}}}
}

效果展示:
在这里插入图片描述

进阶扩展建议

  • 支持上下文对话:将前几轮消息一并传给 messages 数组,构造多轮对话。
  • 接入到 SpringBoot 服务:将调用封装为 Service,作为 REST 接口提供。
  • 流式响应支持:将 stream 设为 true,实现分段读取效果(如聊天窗口)。
http://www.xdnf.cn/news/912637.html

相关文章:

  • IBM官网新闻爬虫代码示例
  • 【量化】量化策略交易
  • Go性能剖析工具:pprof实战指南
  • JS手写代码篇---手写函数柯里化
  • Dify中聊天助手、agent、文本生成、chatflow、工作流模式解读分析与对比
  • 【java】在springboot中实现证书双向验证
  • 告别繁琐配置:在线运行 Matplotlib 画图,Python 环境免安装新体验!
  • 嵌入(Embedding)技术的实现原理与应用场景解析
  • 基于KNN算法的入侵检测模型设计与实现【源码+文档】
  • vue3 按钮 增加快捷方式
  • 易思维报考上市:国投基金清仓退出,郭寅“套现”超6500万元
  • Gerrit相对Git提供了一个特有的命名空间“refs/for/”用来定义我们的提交上传到哪个branch
  • c++重点知识总结
  • win10/win11禁止系统更新
  • AI书签管理工具开发全记录(十三):TUI基本框架搭建
  • 辊式矫平机:金属板材平整加工的基石
  • @Minikube 部署与配置
  • ngx_stream_access_module基于 IP 的流式访问控制实践指南
  • C++.OpenGL (6/64)坐标系统(Coordinate Systems)
  • GPU纹理复用技术实战:显存占用狂降70%的革命性优化方案
  • C++ --- vector
  • MySQL 事务详解
  • CSS6404L 在物联网设备中的应用优势:低功耗高可靠的存储革新与竞品对比
  • 常用操作符,操作符相关笔试题(谷歌)及算法的优化
  • [蓝桥杯]整理玩具
  • 【乐企板式文件】货物运输类发票,多页支持
  • 爱普生研发全新恒温晶体振荡器 “省、小、精”加速通信产业释放新质动能!
  • Java并发编程实战 Day 12:阻塞队列与线程协作
  • 文件上传/下载接口开发
  • Python训练第四十六天