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

Python使用Flask結(jié)合DeepSeek開發(fā)(實現(xiàn)代碼)

 更新時間:2025年02月15日 13:45:57   作者:程序員Rocky  
文章介紹了如何使用ollama部署DeepSeek大模型,并通過Python Flask和SSE技術(shù)實現(xiàn)一個簡單的對話應(yīng)用,代碼實現(xiàn)了模型的調(diào)用和結(jié)果展示,并討論了SSE不支持POST請求的問題及解決方案,感興趣的朋友一起看看吧

一、背景

        我之前關(guān)于DeepSeek使用ollama部署的文章大家可以把DeepSeek大模型部署起來。那么ollama還提供了可以調(diào)用對應(yīng)部署模型的API接口。我們可以基于這些接口,做自己的二次開發(fā)。使用python+flask+ollama就可以進行模型對話調(diào)用。并且前端采用SSE的技術(shù),后端向前端推送推理結(jié)果進行展示,可以實現(xiàn)屬于自己的大模型對話產(chǎn)品。

二、代碼實現(xiàn)

1、ollama運行deepseek-r1:1.5b模型

docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
docker exec -it ollama ollama run deepseek-r1:1.5b

2、python+flask代碼

import json
from flask import Flask, request, Response
from ollama import Client
app = Flask(__name__)
# ollama客戶端
ollma_url = "http://localhost:11434"   # localhost可以換成你部署ollama主機的ip、遠程ip
ollama_client = Client(host=ollma_url )
# 模型名稱
model_name = "deepseek-r1:1.5b"
@app.route('/stream', methods=['POST', 'GET'])
def post_example():
    def generate():
        try:
            # 調(diào)用ollama客戶端,傳入模型名稱、提問信息
            response_generator = ollama_client.generate(model_name, prompt=question, stream=True)
            for part in response_generator:
                response_text = part.response
                # 按照 SSE 規(guī)范格式化數(shù)據(jù)
                data = f"data: {json.dumps({'response': response_text})}\n\n"
                print(data)
                yield data
        except Exception as e:
            error_data = f"data: {json.dumps({'error': str(e)})}\n\n"
            yield error_data
    # 接收問題, 調(diào)用模型, 使用SSE推送推理結(jié)果給前端
    question = request.args.get('question')
    resp = Response(generate(), mimetype='text/event-stream')
    # 設(shè)置響應(yīng)頭
    resp.headers['Cache-Control'] = 'no-cache'
    resp.headers['Connection'] = 'keep-alive'
    resp.headers['Access-Control-Allow-Origin'] = '*'
    return resp
if __name__ == '__main__':
    app.run(debug=True, port=8080)

3、前端代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Ask Ollama via SSE</title>
</head>
<body>
    <input type="text" id="questionInput" placeholder="請輸入你的問題">
    <button id="askButton">提問</button>
    <pre id="answerContainer"></p>
    <script>
        const questionInput = document.getElementById('questionInput');
        const askButton = document.getElementById('askButton');
        const answerContainer = document.getElementById('answerContainer');
        askButton.addEventListener('click', async () => {
            const question = questionInput.value;
            if (!question) {
                alert('請輸入問題');
                return;
            }
            const eventSource = new EventSource(`http://localhost:8080/stream?question=${encodeURIComponent(question)}`);
            eventSource.onmessage = function (event) {
                const data = JSON.parse(event.data);
                const response = data.response;
                if (response) {
                    const p = document.createElement('span');
                    p.textContent = response;
                    answerContainer.appendChild(p);
                }
            };
            eventSource.onerror = function (error) {
                console.error('EventSource failed:', error);
                eventSource.close();
            };
        });
    </script>
</body>
</html>

4、運行結(jié)果

        頁面雖然不是很美觀,但是一個基本原理的demo已經(jīng)搞定。剩下的就是優(yōu)化界面、優(yōu)化鏈接異常等相關(guān)邏輯。

5、SSE默認不支持POST請求

        SSE默認不支持POST請求,可以找前端的一些npm包有人進行了封裝,可以發(fā)送POST請求。以上的實例為了方便采用了GET請求

三、總結(jié)

        有了ollama就行docker服務(wù)一樣,提供了API接口,部署的模型就是類似docker已經(jīng)運行的容器。 通過ollama接口,可以調(diào)用運行的模型的各種能力!

到此這篇關(guān)于Python使用Flask結(jié)合DeepSeek開發(fā)的文章就介紹到這了,更多相關(guān)Python DeepSeek開發(fā)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 通過Python把學姐照片做成拼圖游戲

    通過Python把學姐照片做成拼圖游戲

    馬上就到畢業(yè)季了,你心中的那個學姐,你真的放下了嗎?本文將用pygame為你的學姐,定制開發(fā)一個拼圖游戲,感興趣的快跟隨小編一起學習一下
    2022-02-02
  • Python操作csv文件實例詳解

    Python操作csv文件實例詳解

    這篇文章主要為大家詳細介紹了Python操作csv文件的實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • python實現(xiàn)文字轉(zhuǎn)語音的項目實踐

    python實現(xiàn)文字轉(zhuǎn)語音的項目實踐

    pyttsx3是一個Python庫,用于文字轉(zhuǎn)語音的功能,它可以將文本轉(zhuǎn)換為語音,并使用不同的音頻引擎進行輸出,本文就來詳細的介紹一下用法,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • PyCharm+Miniconda3安裝配置教程詳解

    PyCharm+Miniconda3安裝配置教程詳解

    這篇文章主要介紹了PyCharm+Miniconda3安裝配置教程詳解,需要的朋友可以參考下
    2021-02-02
  • 安裝pyinstaller遇到的各種問題(小結(jié))

    安裝pyinstaller遇到的各種問題(小結(jié))

    這篇文章主要介紹了安裝pyinstaller遇到的各種問題(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • python opencv之SIFT算法示例

    python opencv之SIFT算法示例

    這篇文章主要介紹了python opencv之SIFT算法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • python爬蟲 Pyppeteer使用方法解析

    python爬蟲 Pyppeteer使用方法解析

    這篇文章主要介紹了python爬蟲 Pyppeteer使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • python去除文件中空格、Tab及回車的方法

    python去除文件中空格、Tab及回車的方法

    這篇文章主要介紹了python去除文件中空格、Tab及回車的方法,涉及Python針對文件與字符串操作的相關(guān)技巧,需要的朋友可以參考下
    2016-04-04
  • Python模塊匯總(常用第三方庫)

    Python模塊匯總(常用第三方庫)

    計算機在開發(fā)過程中,代碼越寫越多,也就越難以維護,所以為了編寫可維護的代碼,我們會把函數(shù)進行分組,放在不同的文件里。在python里,一個.py文件就是一個模塊
    2019-10-10
  • Python合并多個Excel數(shù)據(jù)的方法

    Python合并多個Excel數(shù)據(jù)的方法

    這篇文章主要介紹了Python合并多個Excel數(shù)據(jù)的方法也就是說將多個excel中的數(shù)據(jù)合并到另一個表中,本文通過實例代碼相結(jié)合的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-07-07

最新評論