使用ollama本地部署qwen2并api调用

使用ollama本地部署qwen2并api调用

选型

Ollama

ollama是一个集成了许多模型的工具,自带实现了API的整合和调用,只需要命令就可以运行一些支持的常见大模型,且支持对gguf类型的模型进行部署。微调模型可以直接压缩成这个类型的文件,对后续微调模型提供基础。

安装

在wsl中运行 curl -fsSL [https://ollama.com/install.sh](https://ollama.com/install.sh) | sh 命令,直接抓取安装指令,自动安装,并且配置到环境中。

运行 ollama -v 出现 ollama version is 0.1.45 的输出,ollama安装成功。

运行 ollama run qwen2 ,即可开始对话

Api调用

通过查阅资料,ollama会在本地的11434端口自动开启服务

查阅官方的api参考文档,得到使用说明。

API 参考 - Ollama中文网

尝试apifox调用

发现返回值会用每一个token单独返回,不利于开发。

查阅文档后发现要加入 "stream":false 的参数。

加入后再次运行,返回顺利。

编写代码

创建一个 askLocalQwen2Model 方法,传入参数prompt,按照JSON传入,得到与api工具直接调用相同的结果。

最后再使用JSON工具包提取出返回值,String的返回参数是response的结果。

public static String askLocalQwen2Model(String prompt) throws IOException {
    String urlString = "http://localhost:11434/api/generate";
    URL url = new URL(urlString);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
​
    // 设置请求方法为POST
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Content-Type", "application/json; utf-8");
    conn.setRequestProperty("Accept", "application/json");
    conn.setDoOutput(true);
​
    // 创建要发送的JSON对象
    JSONObject jsonInput = new JSONObject();
    jsonInput.put("model", "qwen2");
    jsonInput.put("prompt", prompt);
    jsonInput.put("stream", false);
​
    // 将JSON输入写入请求的输出流
    try (OutputStream os = conn.getOutputStream()) {
        byte[] input = jsonInput.toString().getBytes("utf-8");
        os.write(input, 0, input.length);
    }
​
    // 读取响应内容
    try (BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"))) {
        StringBuilder response = new StringBuilder();
        String responseLine;
        while ((responseLine = br.readLine()) != null) {
            response.append(responseLine.trim());
        }
​
        // 解析JSON响应并提取response字段
        JSONObject jsonResponse = new JSONObject(response.toString());
        return jsonResponse.getString("response");
    }
}
<think>嗯,用户想解决数据仓库中的数据发散问题。首先,我需要理解什么是数据发散。根据引用[1]提到的,数据仓库的数据来自不同源,然后集成管理。如果数据发散,可能是指数据在集成过程中出现冗余、不一致或者重复存储的情况,导致数据冗余和混乱。 接下来,我应该回顾数据仓库的架构层。根据引用[3],DWD层负责数据清理、整合和规范化,处理不规范的数据。所以可能在数据整合层没有做好标准化,导致下游数据发散。用户提到的数据发散可能出现在ODS到DWD层,或者DWD到上层应用的处理中。 解决方案方面,用户需要标准化数据模型,比如统一维度建模,建立主数据管理。引用[2]提到数据探查和数据质量的重要性,所以加强数据探查和制定标准规范是关键。另外,引用[4]的例子说明在数据合时需要考虑合理方案,避免数据冗余。 还需要考虑数据治理流程,比如建立数据血缘追踪,这样能监控数据流向,避免重复加工。同时,分层架构优化,比如在DWD层严格统一数据口径,减少上层处理的差异。可能还需要工具支持,比如元数据管理和数据质量检查工具。 最后,生成相关问题时要涵盖数据发散的原因、治理方法、主数据管理、工具、分层架构的作用以及数据探查的步骤。这样用户能全面了解解决方案和相关方面。</think># 数据仓库中数据发散问题的解决方案 数据发散指数据在加工过程中因缺乏统一标准导致冗余、不一致或重复存储的问题。以下是系统性解决方案: --- ## 一、数据发散的根本原因 1. **多源异构数据未整合**:不同业务系统的数据定义、格式、粒度不一致,导致下游加工逻辑分散[^1] 2. **缺乏数据建模规范**:未建立统一的事实表/维度表标准,同类数据被多次加工存储[^3] 3. **数据血缘不清晰**:无法追溯数据加工链路中的重复操作或冗余转换 --- ## 二、核心解决方法 ### 1. 建立标准化数据模型 - **统一维度建模**:定义公共维度(如时间、地域、产品)建立维度总线矩阵,例如: $$ \text{维度表} = \{ \text{主键}, \text{属性集}, \text{缓慢变化类型} \} $$ - **主数据管理(MDM)**:对客户、供应商等核心实体建立唯一可信数据源[^3] ### 2. 强化数据治理流程 - **数据探查先行**:在开发前通过数据质量检查(如空值率、枚举值分布)识别潜在冲突[^2] - **制定开发规范**: - 字段命名规范(如`user_id`代替`UID`/`UserId`) - 计算口径文档化(如GMV=订单金额-退货金额+补贴金额) ### 3. 优化分层架构设计 | 层级 | 防发散措施 | |-------|-----------| | ODS层 | 保持原始数据,建立增量全量合规则[^4] | | DWD层 | 执行数据清洗、代码值转换、单位统一 | | DWS层 | 创建通用汇总模型,禁止业务直接访问DWD层 | --- ## 三、技术实施建议 1. **元数据管理工具**:通过数据血缘图谱识别重复加工节点 2. **版本控制系统**:对ETL脚本、数据模型进行版本管控 3. **质量监控体系**:配置一致性检查规则(如`SUM(订单表金额) ≡ SUM(支付表金额)`) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值