| import os |
| import json |
| from flask import Flask, render_template, request, jsonify |
| from flask_cors import CORS |
| import requests |
| from dotenv import load_dotenv |
|
|
| |
| load_dotenv() |
|
|
| app = Flask(__name__) |
| CORS(app) |
|
|
| |
| API_KEY = os.getenv("MISTRAL_API_KEY") |
| API_URL = os.getenv("MISTRAL_API_URL", "https://api.mistral.ai/v1/") |
|
|
| |
| def generate_response_api(prompt, max_length=1024): |
| if not API_KEY: |
| return "Ошибка: API ключ не найден. Пожалуйста, добавьте MISTRAL_API_KEY в файл .env" |
| |
| headers = { |
| "Authorization": f"Bearer {API_KEY}", |
| "Content-Type": "application/json" |
| } |
| |
| data = { |
| "model": "mistral-medium", |
| "messages": [ |
| {"role": "user", "content": prompt} |
| ], |
| "max_tokens": max_length, |
| "temperature": 0.7, |
| "top_p": 0.9 |
| } |
| |
| try: |
| response = requests.post(f"{API_URL}chat/completions", headers=headers, json=data) |
| response.raise_for_status() |
| result = response.json() |
| return result["choices"][0]["message"]["content"] |
| except Exception as e: |
| return f"Ошибка при обращении к API: {str(e)}" |
|
|
| |
| @app.route('/') |
| def index(): |
| return render_template('index.html') |
|
|
| @app.route('/api/chat', methods=['POST']) |
| def chat(): |
| data = request.json |
| prompt = data.get('prompt', '') |
| |
| if not prompt: |
| return jsonify({"error": "Пустой запрос"}), 400 |
| |
| try: |
| response = generate_response_api(prompt) |
| return jsonify({"response": response}) |
| except Exception as e: |
| return jsonify({"error": str(e)}), 500 |
|
|
| @app.route('/api/code', methods=['POST']) |
| def code(): |
| data = request.json |
| prompt = data.get('prompt', '') |
| language = data.get('language', 'python') |
| |
| if not prompt: |
| return jsonify({"error": "Пустой запрос"}), 400 |
| |
| |
| code_prompt = f"Напиши код на языке {language} для решения следующей задачи: {prompt}" |
| |
| try: |
| response = generate_response_api(code_prompt) |
| return jsonify({"code": response}) |
| except Exception as e: |
| return jsonify({"error": str(e)}), 500 |
|
|
| if __name__ == '__main__': |
| print("🚀 Запуск AI Assistant в режиме API") |
| print("⚠️ Убедитесь, что вы добавили MISTRAL_API_KEY в файл .env") |
| app.run(debug=True, port=5000) |