大语言模型

AI

AI是人工智能(Artificial Intelligence)的缩写,它是一种模拟人类智能的技术,使机器能够像人一样学习、思考和做出决策,从而能够自主地执行各种任务。

  • 机器学习:
专门研究计算机怎样模拟或实现人类的学习行为, 以获取新的知识或技能, 重新组织已有的知识结构使之不断改善自身的性能。
  • 深度学习
深度学习的概念源于人工神经网络的研究。深度学习模仿人脑的机制来解释数据。例如图像,声音和文本。

大模型

大模型,全称「大语言模型」, 英文「Large Language Model」,缩写「LLM」。 是一种基于机器学习和自然语言处理技术的模型, 它通过对大量的文本数据进行训练, 来学习服务人类语言理解和生成的能力

特点

  1. 数据量大
  2. 规模大
  3. 算力大
  4. 参数量大
  5. 具备强大泛化能力的预训练模型

大模型和通用人工智能

通用人工智能

  • 简称AGI(Artificial General Intelligence)
  • 指的是一种智能,能够理解、学习和应用知识和技能,需要能够处理极其广泛的问题和环境,具有很高的适应性、自主性和创造性。这是人类的终极目标,目前还没有达到!

AIGC人工智能生成内容

  • (Artificial Intelligence Generated Content) 定义:指利用人工智能技术自动生成文本、图像、音频、视频等内容。
  • AIGC的快速发展(如大语言模型)为AGI提供了部分技术积累 (如自然语言处理能力),但AGI需突破认知、推理等更高层能力。
  • 总结来说,AIGC是当前AI技术落地的热门方向,而AGI是长期愿景

常见大模型

开源大模型VS闭源大模型

常见大模型版本区分

通义千问2.5: 这是通义千问第2.5代通用模型
版本编号(如0314、2025-03-05):这些数字通常代表模型的发布或修订日期。
72B:指大模型的内部参数量,比如还有DeepSeek满血版DeepSeek-671B,1个B为10亿。
1M:这个标签通常指的是模型处理文本时的最大token数(或“上下文窗口"大小)。32k意味着模型能够在一个实例中处理最多32,000个token。这对于处理长文本特别有用。
Turbo:这可能指的是模型的一个优化版本,旨在提高速度和效率,可能在保持生成质量的同时减少了资源消耗。
Preview:这通常意味着该模型是供早期访问、测试或预览的版本。它可能不是最终的商业版本,但提供了对即将发布功能的早期查看。
带V字:这意味着模型被设计或优化以处理视觉数据,比如图像或视频

Hello,World

基本步骤

1.注册用户
2.开通大模型功能
3.获取API Key,配置环境
4.通过代码调用API实现功能

演示代码

package com.hhyunerp.service.deepseek.ds;

/**
* AiAnalyzeUtils类描述:
*
*/
@Slf4j
public class AiAnalyzeUtils {
public static final String API_KEY = "XXXXXXX";
public static final String BASE_URL = "https://api.deepseek.com";

public static final String API_KEY_ALI = "XXXXXX";

private static StringBuilder reasoningContent = new StringBuilder();
private static StringBuilder finalContent = new StringBuilder();
private static boolean isFirstPrint = true;

private static final String STOCK_APP_ID = "XXXXXXX";
private static final String STOCK_APP_ID_KEY = "XXXXXXXXX";


private static final ObjectMapper objectMapper = new ObjectMapper();
private static final Pattern DATA_PATTERN = Pattern.compile("data:(\\{.*?\\})");

/**
* 分析数据--deepseek
* @param prompt 分析规则
* @param data 数据
*/
public static HashObject analyzeFile(String prompt, HashObject data) {
OkHttpClient client = new OkHttpClient().newBuilder()
.connectTimeout(6000, TimeUnit.SECONDS)
.writeTimeout(6000, TimeUnit.SECONDS)
.readTimeout(6000, TimeUnit.SECONDS).build();

Payload payload = new Payload("deepseek-chat");
ArrayList<MyMessage> myMessages = payload.getMessages();
MyMessage system = new MyMessage("system", prompt);
MyMessage user = new MyMessage("user", "<目标数据>请分析一下这份json数据:" + JSON.toJSONString(data));
myMessages.add(system);
myMessages.add(user);
payload.setMessages(myMessages);
// 1. 构建 Multipart 请求体
RequestBody requestBody = RequestBody.create(JSON.toJSONString(payload),MediaType.parse("application/json; charset=utf-8"));
// 2. 构建请求对象
// 构建请求
Request request = new Request.Builder()
.url(BASE_URL + "/chat/completions")
.post(requestBody)
.addHeader("Authorization", "Bearer " + API_KEY)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.build();

// 3. 发送请求并处理响应
// 发送请求并处理响应
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) {
System.err.println("请求失败,状态码: " + response.code());
if (response.body() != null) {
System.err.println("错误信息: " + response.body().string());
}
return new HashObject();
}

// 解析成功响应
if (response.body() != null) {
String responseData = response.body().string();
ChatCompletion chatCompletion = JSON.parseObject(responseData, ChatCompletion.class);
ArrayList<Choice> choices = chatCompletion.getChoices();
Choice choice = choices.get(0);
ResponseMessage responseMessage = choice.getMessage();
String content = responseMessage.getContent();
HashObject row = JsonUtils.parseHashObject(content);
row.put("思考流程", responseMessage.getReasoning_content());
return row;
}
} catch (IOException e) {
System.err.println("请求过程中发生异常: ");
e.printStackTrace();
}

return new HashObject();
}




public static ApplicationParam buildApplicationParam(List<Message> userMsg){

return ApplicationParam.builder()
// 若没有配置环境变量,可用百炼API Key将下行替换为:.apiKey("sk-xxx")。但不建议在生产环境中直接将API Key硬编码到代码中,以减少API Key泄露风险。
.apiKey(STOCK_APP_ID_KEY)
.appId(STOCK_APP_ID)
.messages(userMsg)
.enableSystemTime(true)
.enableWebSearch(true)
.build();
}

@Data
@Accessors(chain = true)
public static class ContinuousStreamRequest {

private String token;

private Integer userId;

private String question;

private String code;

private Map<String, Object> customParams;

private String defaultQuestionId;

}
}