deepseek本地部署及java、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)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08詳解Java8新特性之interface中的static方法和default方法
這篇文章主要介紹了Java8新特性之interface中的static方法和default方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08spring boot高并發(fā)下耗時操作的實現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于spring boot高并發(fā)下耗時操作的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11SpringBoot注解篇之@Resource與@Autowired的使用區(qū)別
@Resource 注解和 @Autowired 注解都是在 Spring Framework 中進(jìn)行依賴注入的注解,那么你知道他們有什么區(qū)別嗎,本文就來介紹一下2023-12-12spring中jdbcTemplate.batchUpdate的幾種使用情況
本文主要介紹了spring中jdbcTemplate.batchUpdate的幾種使用情況,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04Java配置JDK開發(fā)環(huán)境及環(huán)境變量
這篇文章主要為大家詳細(xì)介紹了Java配置JDK開發(fā)環(huán)境及環(huán)境變量,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-09-09解決Maven 項目報錯 java.httpservlet和synchronized使用方法
下面小編就為大家?guī)硪黄鉀QMaven 項目報錯 java.httpservlet和synchronized使用方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07