前言
之前發表的文章已經講了如何本地部署Deepseek模型,并且如何給Deepseek模型投喂數據、搭建本地知識庫,但大部分人不知道怎么應用,讓自己的項目接入AI模型。
文末有彩蛋哦!!!
要接入本地部署的deepseek,我就要利用到我們之前部署時安裝的ollama服務,并調用其API
本地API接口
1、生成文本(Generate Text)
url: POST /api/generate
功能:向模型發送提示詞(prompt),并獲取生成的文本。
請求格式:
{"model": "<model-name>", // 模型名稱"prompt": "<input-text>", // 輸入的提示詞"stream": false, // 是否啟用流式響應(默認 false)"options": { // 可選參數"temperature": 0.7, // 溫度參數"max_tokens": 100 // 最大 token 數}
}
響應格式:
{"response": "<generated-text>", // 生成的文本"done": true // 是否完成
}
2、生成對話補全
url:POST /api/chat
功能:支持多輪對話,模型會記住上下文。
請求格式:
{"model": "<model-name>", // 模型名稱"messages": [ // 消息列表{"role": "user", // 用戶角色"content": "<input-text>" // 用戶輸入}],"stream": false, // 是否啟用流式響應"options": { // 可選參數"temperature": 0.7,"max_tokens": 100}
}
響應格式:
{"message": {"role": "assistant", // 助手角色"content": "<generated-text>" // 生成的文本},"done": true
}
3、列出本地模型(List Models)
url:GET /api/tags
功能:列出本地已下載的模型。
響應格式:
{"models": [{"name": "<model-name>", // 模型名稱"size": "<model-size>", // 模型大小"modified_at": "<timestamp>" // 修改時間}]
}
4、模型的詳細信息
url:POST /api/show
功能:查看特定模型的詳細信息。
請求格式:
{"name": model}
響應格式:
{"license": "...","template": "...","details": {...},"model_info": {...},"modified_at": "2025-02-10T13:26:44.0736757+08:00"
}
5、生成嵌入向量
url:POST /api/embed
功能:為輸入的文本生成嵌入向量。
請求格式:
{"model": model,"input": text
}
響應格式:
{"model": "deepseek-r1:7b","embeddings": [[0.00245497,...]],"total_duration": 8575498700,"load_duration": 7575292200,"prompt_eval_count": 4
}
使用實例
1、啟動 Ollama 服務
在使用 API 之前,需要確保 Ollama 服務正在運 行。可以雙擊打開或通過以下命令啟動服務:
ollama serve
2、在項目中調用API(這里以react為例實現簡單效果)
AI.jsx:
import { useEffect, useState, useRef } from 'react';
import './AI.css';export default function AI() {const [outputContent, setOutput] = useState('');// ref 存儲textarea 內容const inputRef = useRef(null);useEffect(() => {// const userPrompt = "介紹";// streamOllamaResponse(userPrompt);}, []);let handleSubmit = async (event) => {event.preventDefault();streamOllamaResponse(inputRef.current.value);}async function streamOllamaResponse(prompt) {const url = 'http://localhost:11434/api/generate';const headers = {'Content-Type': 'application/json'};const data = {"model": "deepseek-r1:7b","prompt": prompt,"stream": true};const response = await fetch(url, {method: 'POST',headers: headers,body: JSON.stringify(data)});if (!response.ok) {console.error(`請求失敗,狀態碼: ${response.status}`);return;}const reader = response.body.getReader();const decoder = new TextDecoder('utf-8');while (true) {const { done, value } = await reader.read();if (done) {break;}const chunk = decoder.decode(value, { stream: true });const chunkResponse = JSON.parse(chunk).responseconsole.log(chunkResponse);setOutput((outputContent) => outputContent + chunkResponse);}}return (<div className='ai-container'><h2>AI Page</h2><div className='ai-content'><div className='output-container'><pre>{outputContent}</pre></div><div className='input-container'><textarea ref={inputRef} name="" id="" placeholder='請輸入您的問題'></textarea><button onClick={handleSubmit}>提交</button></div></div></div>)
}
效果
文末彩蛋!!(粉絲福利)
DeepSeek使用技巧大全.rar:https://pan.quark.cn/s/6e769f336d4b