欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

deepseek本地部署及java、python調(diào)用步驟詳解

 更新時間:2025年02月15日 10:19:46   作者:Most666  
這篇文章主要介紹了如何下載和使用Ollama模型,包括安裝JDK?17及以上版本和Spring?Boot?3.3.6,配置pom文件和application.yml,創(chuàng)建Controller,以及使用Python調(diào)用模型,需要的朋友可以參考下

1.下載Ollama

(需要科學(xué)上網(wǎng))

https://ollama.com/

2.拉取模型

輸入命令

ollama pull deepseek-v3

由于v3太大,改為r1,命令為:

ollama run deepseek-r1:1.5b

查看安裝的模型

ollama ls

查看啟動的模型

ollama ps

對話框輸入/bye退出

3.Java調(diào)用

目前僅支持jdk17以上版本使用,本文使用的是jdk21,springboot版本為3.3.6版本過高、過低時都無法正常啟動

3.1引入pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.6</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo21</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo21</name>
    <description>demo21</description>

    <properties>
        <java.version>21</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>io.springboot.ai</groupId>
            <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
            <version>1.0.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

3.2配置application.yml

server:
  port: 8088
spring:
  application:
    name: demo21
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        options:
          model: deepseek-r1:1.5b

3.2創(chuàng)建Controller

import org.springframework.ai.chat.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.ollama.OllamaChatClient;
import org.springframework.ai.ollama.api.OllamaOptions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class OllamaClientController {

    @Autowired
    @Qualifier("ollamaChatClient")
    private OllamaChatClient ollamaChatClient;

    /**
     * http://localhost:8088/ollama/chat/v1?msg=java就業(yè)前景
     */
    @GetMapping("/ollama/chat/v1")
    public String ollamaChat(@RequestParam String msg) {
        return this.ollamaChatClient.call(msg);
    }

    /**
     * http://localhost:8088/ollama/chat/v2?msg=java就業(yè)前景
     */
    @GetMapping("/ollama/chat/v2")
    public Object ollamaChatV2(@RequestParam String msg) {
        Prompt prompt = new Prompt(msg);
        ChatResponse chatResponse = ollamaChatClient.call(prompt);
        return chatResponse.getResult().getOutput().getContent();
    }

    /**
     * http://localhost:8088/ollama/chat/v3?msg=java就業(yè)前景
     */
    @GetMapping("/ollama/chat/v3")
    public Object ollamaChatV3(@RequestParam String msg) {
        Prompt prompt = new Prompt(
                msg,
                OllamaOptions.create()
                        .withModel("deepseek-r1:1.5b")
                        .withTemperature(0.4F));
        ChatResponse chatResponse = ollamaChatClient.call(prompt);
        return chatResponse.getResult().getOutput().getContent();
    }
}

4.python調(diào)用

pip引入

pip install ollama

創(chuàng)建.py文件

import ollama

# 流式輸出
def api_generate(text: str):
    print(f'提問:{text}')

    stream = ollama.generate(
        stream=True,
        model='deepseek-r1:1.5b',
        prompt=text,
    )

    print('-----------------------------------------')
    for chunk in stream:
        if not chunk['done']:
            print(chunk['response'], end='', flush=True)
        else:
            print('\n')
            print('-----------------------------------------')
            print(f'總耗時:{chunk['total_duration']}')
            print('-----------------------------------------')

def api_chat(text: str):
    print(f'提問:{text}')

    stream = ollama.chat(
        stream=True,
        model='deepseek-r1:1.5b',
        messages=[{"role":"user","content":text}]
    )

    print('-----------------------------------------')
    for chunk in stream:
        if not chunk['done']:
            print(chunk['message'].content, end='', flush=True)
        else:
            print('\n')
            print('-----------------------------------------')
            print(f'總耗時:{chunk['total_duration']}')
            print('-----------------------------------------')

if __name__ == '__main__':
    # 流式輸出
    api_generate(text='python就業(yè)前景')
    
    api_chat(text='python就業(yè)前景')

    # 非流式輸出
    content = ollama.generate(model='deepseek-r1:1.5b', prompt='python就業(yè)前景')
    print(content)

    content = ollama.chat(model='deepseek-r1:1.5b', messages=[{"role":"user","content":'python就業(yè)前景'}])
    print(content)

總結(jié) 

到此這篇關(guān)于deepseek本地部署及java、python調(diào)用的文章就介紹到這了,更多相關(guān)deepseek本地部署java、python調(diào)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring之動態(tài)注冊bean的實現(xiàn)方法

    Spring之動態(tài)注冊bean的實現(xiàn)方法

    這篇文章主要介紹了Spring之動態(tài)注冊bean的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • 詳解Java8新特性之interface中的static方法和default方法

    詳解Java8新特性之interface中的static方法和default方法

    這篇文章主要介紹了Java8新特性之interface中的static方法和default方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08
  • spring boot高并發(fā)下耗時操作的實現(xiàn)方法

    spring boot高并發(fā)下耗時操作的實現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于spring boot高并發(fā)下耗時操作的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 淺聊一下Spring中Bean的配置細(xì)節(jié)

    淺聊一下Spring中Bean的配置細(xì)節(jié)

    我們知道,當(dāng)寫完一個普通的 Java 類后,想讓 Spring IoC 容器在創(chuàng)建類的實例對象時使用構(gòu)造方法完成實例對象的依賴注入,那么就需要在配置元數(shù)據(jù)中寫好類的 Bean 定義,包括各種標(biāo)簽的屬性。所以本文我們來說說這其中的配置細(xì)節(jié),需要的朋友可以參考下
    2023-07-07
  • Java實現(xiàn)簡單的郵件發(fā)送功能

    Java實現(xiàn)簡單的郵件發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)簡單的郵件發(fā)送功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • SpringBoot注解篇之@Resource與@Autowired的使用區(qū)別

    SpringBoot注解篇之@Resource與@Autowired的使用區(qū)別

    @Resource 注解和 @Autowired 注解都是在 Spring Framework 中進(jìn)行依賴注入的注解,那么你知道他們有什么區(qū)別嗎,本文就來介紹一下
    2023-12-12
  • Java如何在命令行中獲取指定數(shù)據(jù)

    Java如何在命令行中獲取指定數(shù)據(jù)

    這篇文章主要介紹了Java如何在命令行中獲取指定數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • spring中jdbcTemplate.batchUpdate的幾種使用情況

    spring中jdbcTemplate.batchUpdate的幾種使用情況

    本文主要介紹了spring中jdbcTemplate.batchUpdate的幾種使用情況,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Java配置JDK開發(fā)環(huán)境及環(huán)境變量

    Java配置JDK開發(fā)環(huán)境及環(huán)境變量

    這篇文章主要為大家詳細(xì)介紹了Java配置JDK開發(fā)環(huán)境及環(huán)境變量,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 解決Maven 項目報錯 java.httpservlet和synchronized使用方法

    解決Maven 項目報錯 java.httpservlet和synchronized使用方法

    下面小編就為大家?guī)硪黄鉀QMaven 項目報錯 java.httpservlet和synchronized使用方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07

最新評論