チャット中のユーザーの質問を拡張する機能を ollama-python と flask で実装しました

はじめに

以下を実装しました。
touch-sp.hatenablog.com

メインPC

import requests

url = "http://192.168.11.14:5000/flask_ollama"

prompt='''以下にチャットの履歴があります。最後の行がユーザーの質問です。チャット履歴をもとにユーザーの質問をそれ自体で内容がわかるように簡単に書き換えて下さい。
```
山梨県の夏の観光名所は
富士山、富士五湖などがあります。
冬は
```'''

data = {"prompt": prompt}

response = requests.post(url, json=data)

if response.status_code == 200:
    result = response.json()
    print(f"結果: {result["result"]}")
else:
    print(f"エラー: {response.status_code}, {response.text}")

サーバーPC

Ollamaが実行されている前提です。

from flask import Flask, request, jsonify
import ollama

app = Flask(__name__)

@app.route('/flask_ollama', methods=['POST'])
def prompt_extention():

    data = request.get_json()
    if "prompt" not in data:
        return jsonify({"error": "promptが提供されていません"}), 400
    
    prompt = data["prompt"]
    if not isinstance(prompt, str):
        return jsonify({"error": "有効なpromptではありません"}), 400

    answer = ollama.chat(
        model='gemma2:27b', 
        messages=[
            {
                "role": "user",
                "content": prompt
            }
        ],
        options={
            "max_tokens": 256,
            "temperature": 0.3,
            "top_p": 0.9,
            "top_k": 40,
            "presence_penalty": 0.0,
            "frequency_penalty": 0.0,
            "repeat_penalty": 1.1,
            "mirostat_mode": 0,
            "mirostat_tau": 5.0,
            "mirostat_eta": 0.1
        }
    )

    extended_prompt = answer["message"]["content"]
    return jsonify({"result": extended_prompt})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

結果

結果: 山梨県の冬の観光名所は何ですか?





このエントリーをはてなブックマークに追加