想做 AI 相关方向但不知道从哪切入?可以先看看这份 2027年计算机毕业设计选题总表,里面专门整理了一批带 AI 能力的选题方向,比自己摸索省时间很多。
一、最小可用的大模型调用封装
不需要引入 LangChain 之类的重型框架,Java 17 自带的 HttpClient 就能完成调用:
private String callDeepSeek(String apiKey, String question) throws IOException, InterruptedException {
String requestBody = """
{
"model":"deepseek-chat",
"messages":[
{"role":"system","content":%s},
{"role":"user","content":%s}
],
"stream":false
}
""".formatted(toJsonString(systemPrompt), toJsonString(question));
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.deepseek.com/chat/completions"))
.timeout(Duration.ofSeconds(60))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer " + apiKey)
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
return response.body();
}
API Key 建议存在系统配置表里而不是写死在代码里,方便换密钥而不用重新发布:
private String getConfigValue(String key) {
GodConfig config = godConfigMapper.selectOne(new LambdaQueryWrapper<GodConfig>()
.eq(GodConfig::getConfigKey, key).last("limit 1"));
return config == null ? null : config.getConfigValue();
}
二、给同一个模型套上不同的"人设"
智能问答和智能推荐虽然都调的是同一个大模型接口,但通过不同的 System Prompt 就能让它扮演完全不同的角色。客服场景的 Prompt 需要明确限制回答边界,防止模型胡乱编造:
你是「爱心捐赠平台」的客服助手。只回答与本平台使用规则相关的问题:捐款流程、
资金去向查询、发起求助、受捐人审核、爱心值规则、账号安全。不要编造任何具体
项目、金额、受助人信息。不确定的问题请引导用户联系人工客服。回答控制在200字以内。
这种"限定角色边界+禁止编造具体信息"的写法,是计算机毕业设计里做 AI 功能时最容易被问到、也最容易讲清楚的一个安全设计点——大模型不是万能的,必须靠 Prompt 工程去约束它的输出范围。
三、规则打分 + AI 生成理由的两段式设计
智能推荐功能没有把匹配度计算也交给大模型,而是拆成了"规则打分"和"AI 生成文案"两段:
double matchScore = budgetScore * 0.4 + categoryScore * 0.25 + urgencyScore * 0.2 + activeScore * 0.15;
打分公式是纯 Java 计算的,可解释、可复现;大模型只负责根据打分结果和用户输入,生成一段带具体数字的自然语言推荐理由。这样设计的好处是:即使大模型偶尔"抽风"生成的文案质量不高,核心的推荐排序逻辑依然是稳定可控的,答辩时被问"这个排序靠谱吗"也能拿数学公式直接回答。
如果你也想做一个"AI + 规则"结合的功能模块,可以参考这份 2027年计算机毕业设计选题总表,里面有几个选题专门讲了这种两段式设计思路。
AI 相关选题这两年很吃香,但也容易做得"华而不实",选题前建议先看看别人是怎么落地的:2027年计算机毕业设计选题总表。
四、别忘了兜底方案
大模型调用是网络请求,一定会有失败的时候(超时、限流、余额不足)。任何调用大模型的功能都必须准备好模板兜底:
try {
aiText = deepSeekHelper.chat(system, user, 20);
} catch (Exception e) {
aiText = String.format("感谢你捐出的 ¥%s!这笔善款将直接用于「%s」项目……", amount, project.getTitle());
}
五、总结
AI 功能不是"调一下接口"这么简单,真正体现设计能力的地方在于:怎么限定模型的行为边界、怎么把可控逻辑和不可控的生成内容拆开、怎么保证接口失败不影响核心业务。掌握这套思路,AI 相关的计算机毕业设计选题会好写很多。
选题还没确定的话,推荐看看这份资料:2027年计算机毕业设计选题总表。下一篇讲这个项目里"AI 捐赠去向解释"功能的具体实现,欢迎继续关注。


