【AI应用开发捷径之路】第四课:如何选择模型服务商:个人探索用 DeepSeek,企业落地选百炼,数据安全上 Ollama

2025-12-30 09:19:18
文章摘要
选择AI模型服务商,核心看需求、预算和技术栈

文章转载自[DAT数智AI技术 ]

原创 小数先生

如何选择模型服务商

选择AI模型服务商,核心看需求、预算和技术栈

追求高性价比和强大代码能力,选 DeepSeek —— 完全免费、长上下文、开发者友好,适合快速原型和个人项目。

需要企业级合规、中文场景深度支持,选 阿里百炼 —— 集成阿里云生态、中文理解强、服务稳定,适合中大型企业。

要求数据绝对安全、完全自主可控,选 Ollama —— 本地部署、开源灵活、隐私无忧,适合敏感数据和定制化需求。

灵活策略:开发阶段用 DeepSeek 快速迭代,生产环境按需选择云端或本地部署,关键业务可混合使用,平衡效率与安全。

三大厂商核心特点

1. DeepSeek

优势

完全免费,无使用限制

支持128K长上下文

代码能力突出,特别适合开发场景

API稳定,文档完善

支持文件上传(图像、txt、pdf、ppt、word、excel)

适用场景

个人开发者/初创公司预算有限

需要强大代码生成/分析能力

长文本处理需求

快速原型开发

2. 阿里云百炼(通义千问)

优势

国内合规性好,企业级服务

集成阿里云生态完善

中文理解能力强

支持模型微调、RAG等企业功能

适用场景

企业级应用,需要合规保障

已在阿里云生态内

需要本地化部署支持

对中文场景有特殊要求

3. Ollama

优势

完全本地运行,数据安全

支持多种开源模型(Llama、Qwen等)

可离线使用

定制化程度最高

适用场景

对数据隐私要求极高

需要完全控制模型

有本地部署条件

技术团队能力强


如果你是:

个人开发者/学生:从 DeepSeek 开始,完全免费且能力强大

初创公司DeepSeek + Ollama 组合,前者快速开发,后者关键业务本地化

中大型企业阿里百炼 为主,合规性和企业支持更重要

数据敏感项目Ollama 本地部署是必须的

一句话总结个人探索用 DeepSeek,企业落地选百炼,数据安全上 Ollama,混合使用更明智。


之前课程中介绍过SpringAI接入deepseek、阿里百炼:

【AI应用开发捷径之路】第三课:文生图、文生视频、文生声音、多模态,如何选择合适的大模型?如何在SpringAI中应用这四种技术

【AI应用开发捷径之路】第二课:SpringAi接入Deepseek


下面介绍一下接入ollama的的一些注意点和步骤:



1. 引入BOM进行版本管理


首先,在你的pom.xml的 <dependencyManagement> 部分:

引入Spring AI的BOM。

推荐使用当时最新的稳定版本


<dependencyManagement>

  <dependencies>

    <dependency>

      <groupId>org.springframework.ai</groupId>

      <artifactId>spring-ai-bom</artifactId>

      <version>1.0.3</version> <!-- 建议使用最新稳定版 –>

      <type>pom</type>

      <scope>import</scope>

    </dependency>

  </dependencies>

</dependencyManagement>

引入BOM后,在添加其他Spring AI组件依赖时就可以省略<version>标签了,所有版本都由BOM统一管理。


2. 添加模型Starter依赖


接下来,在<dependencies>部分添加你所需模型的Starter。

例如,集成OpenAI和Ollama可以这样配置:

 <!–ollama –>

        <dependency>

            <groupId>org.springframework.ai</groupId>

            <artifactId>spring-ai-starter-model-ollama</artifactId>

        </dependency>


3.配置文件


依赖添加完成后,你需要在 :

application.yml 或 application.properties 中进行配置。

spring:

  ai:

    ollama:

      base-url: http://127.0.0.1:11434

      chat:

        options:

          model: deepseek-r1:7b  #

          temperature: 0.7

具体的模型可以通过命令行窗口查看,window下如图:

4.测试

该测试类包含:阻断性输出、流式输出、关闭思考链、多模态

package com.example.base;


import cn.myeasyai.FaceApplication;

import org.junit.jupiter.api.Test;

import org.springframework.ai.chat.messages.UserMessage;

import org.springframework.ai.chat.model.ChatResponse;

import org.springframework.ai.chat.prompt.Prompt;

import org.springframework.ai.content.Media;

import org.springframework.ai.ollama.OllamaChatModel;

import org.springframework.ai.ollama.api.OllamaOptions;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.core.io.ClassPathResource;

import org.springframework.util.MimeTypeUtils;

import reactor.core.publisher.Flux;



@SpringBootTest(classes = FaceApplication.class)

public class TestOllama {



    @Test

    public void testOllama(@Autowired OllamaChatModel ollamaChatModel) {

        String call = ollamaChatModel.call("你好,你是谁?");

        System.out.println(call);

    }



    /

     * 关闭思考链

     * @param ollamaChatModel

     */

    @Test

    public void testOllama2(@Autowired OllamaChatModel ollamaChatModel) {

        String call = ollamaChatModel.call("今天几号?/set no_think");

        System.out.println(call);

    }


    /

     * 流式输出

     * @param ollamaChatModel

     /


    @Test

    public void testOllamaStream(@Autowired OllamaChatModel ollamaChatModel) {

        Flux<String> stream = ollamaChatModel.stream("今天几号?/no_think");

        stream.toIterable().forEach(System.out::println);


    }



    /**

      多模态

     */


    @Test

    public void testOllamaMultimodality(@Autowired OllamaChatModel ollamaChatModel) {

       var imageResource = new ClassPathResource("/images/hhl.png");


        OllamaOptions gemma3 = OllamaOptions.builder().model("gemma3:4b").build();


        Media media = new Media(MimeTypeUtils.IMAGE_PNG, imageResource);


        ChatResponse call = ollamaChatModel.call(new Prompt(UserMessage.builder().media(media)

                        .text("识别图片的内容").build(), gemma3

                )

        );


        System.out.println(call.getResult().getOutput().getText());



    }

}



声明:该内容由作者自行发布,观点内容仅供参考,不代表平台立场;如有侵权,请联系平台删除。
标签:
模型部署
数据安全
企业级大模型