forked from React-Group/interstellar_ai
Added Python #2
4 changed files with 20 additions and 5 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -38,3 +38,6 @@ next-env.d.ts
|
|||
|
||||
.idea/
|
||||
venv/
|
||||
|
||||
key.pem
|
||||
cert.pem
|
||||
|
|
20
py/api.py
20
py/api.py
|
@ -1,5 +1,7 @@
|
|||
from flask import Flask, request, jsonify
|
||||
from flask_cors import CORS
|
||||
import ollama
|
||||
import secrets
|
||||
|
||||
|
||||
class AI:
|
||||
|
@ -19,14 +21,16 @@ class AI:
|
|||
class API:
|
||||
def __init__(self):
|
||||
self.app = Flask(__name__)
|
||||
self.ai_response = []
|
||||
self.ai_response = {}
|
||||
self.ai = AI()
|
||||
CORS(self.app)
|
||||
|
||||
def run(self):
|
||||
@self.app.route('/interstellar/api/ai_create', methods=['GET'])
|
||||
def create_ai():
|
||||
self.ai_response.append("")
|
||||
return jsonify({'status': 200, 'access_token': len(self.ai_response) - 1})
|
||||
access_token = secrets.token_urlsafe(4096)
|
||||
self.ai_response[access_token] = ""
|
||||
return jsonify({'status': 200, 'access_token': access_token})
|
||||
|
||||
@self.app.route('/interstellar/api/ai_send', methods=['POST'])
|
||||
def send_ai():
|
||||
|
@ -35,17 +39,23 @@ class API:
|
|||
ai_model = data.get('ai_model')
|
||||
system_prompt = data.get('system_prompt')
|
||||
access_token = data.get('access_token')
|
||||
if access_token not in self.ai_response:
|
||||
return jsonify({'status': 401, 'error': 'Invalid access token'})
|
||||
self.ai.process_local(ai_model, message, system_prompt, self, access_token)
|
||||
return jsonify({'status': 200})
|
||||
|
||||
@self.app.route('/interstellar/api/ai_get', methods=['GET'])
|
||||
def get_ai():
|
||||
data = request.args.get('access_token')
|
||||
return jsonify({'status': 200, 'response': self.ai_response[int(data)]})
|
||||
if data not in self.ai_response:
|
||||
return jsonify({'status': 401, 'error': 'Invalid access token'})
|
||||
return jsonify({'status': 200, 'response': self.ai_response[data]})
|
||||
|
||||
self.app.run(debug=True)
|
||||
ssl_context = ('cert.pem', 'key.pem')
|
||||
self.app.run(debug=True, host='0.0.0.0', port=5000, ssl_context=ssl_context)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
api = API()
|
||||
api.run()
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
openssl req -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365
|
||||
python -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
flask
|
||||
flask-cors
|
||||
ollama
|
Loading…
Reference in a new issue