网站首页 > 技术教程 正文
用国产应用开发框架(及生态),对接国产 ai。构建全国产 ai 智能体应用。
1、先要申请个 apiKey
打开 https://www.deepseek.com 官网,申请个 apiKey 。(一万字略过)
2、试试:Hello deepseek
用 solon-initializr (
https://solon.noear.org/start/),生成一个 solon-web 模板项目。之后:
- 在应用属性里添加配置(app.yml)
solon.ai.chat:
deepseek:
apiUrl: "https://api.deepseek.com/v1/chat/completions" # 使用完整地址(而不是 api_base)
apiKey: "sk-9f4415ddc57049658189************" # 填写自己申明的 apiKey
model: "deepseek-chat"
- 用配置器类构建通用聊天模型
@Configuration
public class DeepseekConfig {
@Bean
public ChatModel chatModel(@Inject("${solon.ai.chat.deepseek}") ChatConfig config) {
return ChatModel.of(config).build();
}
}
- 添加测试用的控制器
@Controller
public class DemoController {
@Inject
ChatModel chatModel;
@Mapping("hello")
public String hello(String message) throws IOException {
return chatModel.prompt(message).call().getMessage().getContent();
}
}
- 测试一下
启动项目。打开浏览器地址:
http://localhost:8080/hello?message=hello。效果良好:
3、尝试把输出改成 sse,方便打字效果的聊天窗口开发
这里需要添加两个插件依赖,协助流式输出 sse 数据。
插件 | 作用 |
org.noear:solon-web-rx | 提供响应式输出(就是流式输出) |
org.noear:solon-web-sse | 提供sse渲染支持 |
加好依赖后,只需要改进下控制器的几行代码:
@Controller
public class DemoController {
@Inject
ChatModel chatModel;
@Produces(MimeType.TEXT_EVENT_STREAM_UTF8_VALUE) //这个很重要,申明用 sse 格式渲染
@Mapping("hello")
public Flux<String> hello(String message) throws IOException {
return Flux.from(chatModel.prompt(message).stream())
.filter(resp -> resp.hasChoices())
.map(resp -> resp.getMessage().getContent());
}
}
- 测试一下
启动项目。再次打开浏览器地址:
http://localhost:8080/hello?message=hello。效果良好:
4、现在开始 RAG,以 “联网搜索” 作为知识库
这里把“联网搜索”,做为一个知识库使用(内部是动态搜索的)。用它作为 RAG 的外部检索支持。
- 应用属性加一块配置
solon.ai.chat:
deepseek:
apiUrl: "https://api.deepseek.com/v1/chat/completions" # 使用完整地址(而不是 api_base)
apiKey: "sk-9f4415ddc57049658189************" # 填写自己申明的 apiKey
model: "deepseek-chat"
solon.ai.repo:
websearch:
apiUrl: "https://api.bochaai.com/v1/web-search" # 使用完整地址(而不是 api_base)
apiKey: "sk-demo..."
- 配置器类也调整下
@Configuration
public class DeepseekConfig {
@Bean
public ChatModel chatModel(@Inject("${solon.ai.chat.deepseek}") ChatConfig config) {
return ChatModel.of(config).build();
}
@Bean
public Repository repository(@Inject("${solon.ai.repo.websearch}") AiConfig config) {
return new WebSearchRepository(null, config);
}
}
- 再改改控制器(输出重新写回简单的方式,不然不好截图)
@Controller
public class DemoController {
@Inject
ChatModel chatModel;
@Inject
Repository repository;
@Mapping("hello")
public String hello(String message) throws IOException {
//检索
List<Document> context = repository.search(new QueryCondition(message).limit(4));
//消息增强
ChatMessage chatMessage = UserMessage.augment(message, context);
//提交大模型并简单返回(不然,截图不好截)
return chatModel.prompt(chatMessage).call().getMessage().getContent();
}
}
- 测试一下
启动项目。打开浏览器地址:
http://localhost:8080/hello?message=
solon%20%E6%98%AF%E8%B0%81%E5%BC%80%E5%8F%91%E7%9A%84%EF%BC%9F。效果良好:
猜你喜欢
- 2025-06-15 红酒的大致分类及特点(红酒的种类)
- 2025-06-15 奈飞新片《善恶学校》曝光剧照,查理兹·塞隆等主演亮相
- 2025-06-15 使用 Solon Cloud 的 Jaeger 做请求链路跟踪
- 2025-06-15 56岁女子浑身奇痒疼痛难忍,“董氏奇穴”治带状疱疹后遗神经痛
- 2025-06-15 中医特色火针疗法治疗扁平疣临床总结,3例经典医案借鉴分享
- 2025-06-15 Solon2 之 Kotlin 语言开发后端项目,很爽
- 2025-06-15 Java 新的生态型应用开发框架,Solon v2.2.13 发布
- 2025-06-15 马达加斯加总理宣布辞职:已向总统递交辞呈
- 2025-06-15 Java 云原生,Spring 太慢,还是要看 Solon!
- 2025-06-15 无耳 Solon AI v3.1.2 发布(兼容 Java 8 ~ 24)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)