偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何在本地部署 DeepSeek 并提供接口用于開發(fā)AI對話應(yīng)用?

人工智能
本篇文章將介紹如何在你本地的電腦上部署一個 DeepSeek 模型,并提供接口供你調(diào)用,以便后續(xù)基于它開發(fā)一些 AI 對話應(yīng)用。

最近,DeepSeek 異?;鸨?,堪稱國產(chǎn) AI 之光,并且它還是免費(fèi)開源的。只需打開 DeepSeek 對話界面,就能免費(fèi)與其對話,讓它解決你的問題,關(guān)鍵是它的回答質(zhì)量非常高。當(dāng)然,本篇文章并不是介紹如何使用 DeepSeek 進(jìn)行對話的,因為這太簡單了,連我 5 歲的兒子都會用。本篇文章將介紹如何在你本地的電腦上部署一個 DeepSeek 模型,并提供接口供你調(diào)用,以便后續(xù)基于它開發(fā)一些 AI 對話應(yīng)用。

了解 huggingface

  • 什么是 huggingface?

Hugging Face 是一個專注于自然語言處理(NLP)的開源社區(qū),它提供了一個強(qiáng)大的平臺,用于研究和開發(fā)各種 NLP 模型和工具。也就是說,我們需要的 DeepSeek 模型可以從 Hugging Face 下載。它的官網(wǎng)是 huggingface.co/[1]。國內(nèi)用戶使用它可能需要一些“魔法”,但不用擔(dān)心,它在國內(nèi)有一些鏡像地址,你可以通過這些鏡像地址來下載模型。比如 hf-mirror.com/[2],點進(jìn)去之后直接搜索我們需要的模型即可。根據(jù)你的電腦配置,可以選擇不同的模型。這里我選用 DeepSeek 提供的最簡單的 1.5B(15 億個參數(shù))的模型 DeepSeek-R1-Distill-Qwen-1.5B,大約 3GB 左右。

image.png當(dāng)然,這里我們不需要直接在網(wǎng)站上下載,后面可以直接在代碼中加載模型。

準(zhǔn)備工作

  • 安裝 python 環(huán)境

這里我使用的是 python 3.10,你可以根據(jù)自己的電腦配置來選擇合適的版本。官網(wǎng)是 www.python.org/downloads/[3]根據(jù)提示安裝即可

  • 安裝依賴
pip install torch transformers flask

其中 torch 是 PyTorch 的核心庫,PyTorch 是一個開源的機(jī)器學(xué)習(xí)庫,用于構(gòu)建和訓(xùn)練神經(jīng)網(wǎng)絡(luò)。transformers 是一個用于自然語言處理(NLP)任務(wù)的庫,它提供了許多預(yù)訓(xùn)練的模型和工具。flask 是一個輕量級的 Web 應(yīng)用框架,用于構(gòu)建 Web 應(yīng)用。

編寫代碼

from flask import Flask, request, jsonify
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

app = Flask(__name__)

# 加載模型和分詞器
MODEL_NAME = "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(MODEL_NAME)

# 設(shè)置 pad_token_id
if tokenizer.pad_token isNone:
    tokenizer.pad_token = tokenizer.eos_token
model.config.pad_token_id = tokenizer.pad_token_id

# 設(shè)置設(shè)備
device = torch.device("cuda"if torch.cuda.is_available() else"cpu")
model.to(device)

def generate_text(prompt, max_length=100, top_p=0.95, temperature=0.7):
    """
    根據(jù)輸入的提示(prompt)生成文本。

    參數(shù):
        prompt (str): 輸入的文本提示,用于引導(dǎo)模型生成后續(xù)內(nèi)容。
        max_length (int): 生成文本的最大長度(包括輸入提示)。
        top_p (float): 核采樣(Nucleus Sampling)的概率閾值,控制生成文本的多樣性。
        temperature (float): 溫度參數(shù),控制生成文本的隨機(jī)性。

    返回:
        str: 生成的文本。
    """
    # 使用分詞器將輸入文本(prompt)轉(zhuǎn)換為模型所需的輸入格式。
    # return_tensors="pt" 表示返回 PyTorch 張量格式。
    # padding=True 和 truncatinotallow=True 確保輸入長度一致且不超過模型的最大長度。
    inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncatinotallow=True).to(device)

    # 調(diào)用模型的 generate 方法生成文本。
    # inputs.input_ids 是輸入文本的編碼,attention_mask 是注意力掩碼,用于指示哪些位置是有效的輸入。
    outputs = model.generate(
        inputs.input_ids,  # 輸入文本的編碼
        attention_mask=inputs.attention_mask,  # 注意力掩碼
        max_length=max_length,  # 生成文本的最大長度
        num_return_sequences=1,  # 返回的序列數(shù)量(這里只生成一個序列)
        no_repeat_ngram_size=2,  # 避免重復(fù)的 n-gram 大?。ǚ乐怪貜?fù)生成相同的短語)
        do_sample=True,  # 是否使用采樣(而不是貪婪解碼)
        top_p=top_p,  # 核采樣概率閾值
        temperature=temperature,  # 溫度參數(shù),控制隨機(jī)性
        pad_token_id=tokenizer.pad_token_id,  # 填充標(biāo)記的 ID
    )

    # 將生成的編碼(outputs)解碼為可讀的文本。
    # skip_special_tokens=True 表示跳過特殊標(biāo)記(如 [CLS]、[SEP] 等)。
    generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)

    # 返回生成的文本。
    return generated_text

# API 路由
@app.route("/generate", methods=["POST"])
def generate():
    data = request.json
    prompt = data.get("prompt", "")
    max_length = data.get("max_length", 100)
    top_p = data.get("top_p", 0.95)
    temperature = data.get("temperature", 0.7)

    ifnot prompt:
        return jsonify({"error": "Prompt is required"}), 400

    try:
        generated_text = generate_text(prompt, max_length, top_p, temperature)
        return jsonify({"generated_text": generated_text})
    except Exception as e:
        return jsonify({"error": str(e)}), 500

# 啟動應(yīng)用
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

如果你不會 python,直接復(fù)制這段代碼到文本文件中,然后將文件修改保存為app.py即可。

運(yùn)行應(yīng)用

打開app.py所在終端,輸入以下命令可以直接運(yùn)行應(yīng)用:

python app.py

如果你無法訪問 huggingface,可以修改下環(huán)境變量使用鏡像地址:

  • windows 修改方法

cmd

set HF_ENDPOINT=https://hf-mirror.com

powershell

set HF_ENDPOINT=https://hf-mirror.com
  • linux 修改方法
export HF_ENDPOINT=https://hf-mirror.com
  • mac 修改方法
export HF_ENDPOINT="https://hf-mirror.com"

修改完成之后再次運(yùn)行app.py,等待模型下載完畢之后就可以使用了。

image.pngimage.png

調(diào)用接口http://172.16.10.157:5000/generate傳入相關(guān)參數(shù)即可,這里我們只傳入一個提問 prompt 參數(shù),其他參數(shù)都用默認(rèn)值。

測試接口

我們需要使用 postman 或者其他工具來測試接口,這里我使用的是 apifox。調(diào)用接口并傳入prompt問題,等待一會就會返回一個生成的文本。 image.png

當(dāng)然這里因為我們電腦配置有限,只能使用 deepseek 提供的最簡單的 1.5b 的模型作為演示。參數(shù)量越大,生成的文本質(zhì)量肯定就越好,同時需要的電腦配置就越高。

后續(xù)調(diào)用

接口部署完成之后,后續(xù)我們可以根據(jù)需要在工程項目中調(diào)用接口,來實現(xiàn)一些 AI 對話應(yīng)用。同時可以根據(jù)每個用戶的 id 來保存用戶的歷史對話,以便后續(xù)根據(jù)用戶的歷史對話來生成更好的回答。下篇文章將介紹如何使用 nodejs 來調(diào)用這個接口,并實現(xiàn)一個 AI 對話應(yīng)用,歡迎點贊收藏加關(guān)注

標(biāo)注

[1] https://huggingface.co

[2] https://hf-mirror.com/

[3] https://www.python.org/downloads

責(zé)任編輯:龐桂玉 來源: web前端進(jìn)階
相關(guān)推薦

2025-02-08 11:07:35

2025-03-03 02:00:00

DeepSeekAIToken

2024-03-19 15:09:07

2025-03-28 08:14:18

2025-02-28 07:11:20

2025-04-14 00:22:00

2025-02-12 08:21:55

OllamaChatboxDeepSeek

2025-02-11 00:00:25

2025-06-16 08:11:47

2025-02-06 08:06:05

2025-02-14 09:10:47

2025-03-10 00:00:00

2010-08-19 10:15:57

Chrome 7

2025-02-18 00:04:00

DeepSeek模型ChatGPT

2025-03-12 08:01:29

2025-02-13 08:30:11

2015-10-10 15:56:22

OpenShiftNodeJS部署PaaS

2025-05-22 02:00:00

AI人工智能前端

2025-02-12 11:59:15

DeepSeekAI語言模型

2020-10-21 10:16:03

AI保護(hù)公共安全?
點贊
收藏

51CTO技術(shù)棧公眾號