fabric is an open-source framework for augmenting humans using AI. It provides a modular framework for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.7 KiB

from app.chatgpt import bp, sendMessage
from flask import request, jsonify
import os
from app.chatgpt import streamMessage
from app import sockio
from flask_socketio import emit, disconnect
cwd = os.path.dirname(os.path.abspath(__file__))
config_directory = os.path.expanduser("~/.config/fabric/patterns")
modules = os.listdir(config_directory)
@bp.route("/static/<path_name>", methods=['POST'])
# @jwt_required()
def extractwisdom(path_name):
wisdomFile = os.path.join(cwd, f"patterns/{path_name}/system.md")
if os.path.exists(wisdomFile):
with open(wisdomFile, "r") as f:
systemPrompt = f.read()
data = request.get_json()
input_data = data.get('input')
return sendMessage(systemPrompt, input_data), 200
else:
return {'error': 'module not found'}, 404
@bp.route("/patterns", methods=['GET'])
# @jwt_required()
def get_patterns():
return jsonify(modules), 200
@sockio.on('connect')
def handle_connect():
# token = request.headers.get('Authorization')
# if token:
# token = token.split(' ')[1]
# if not is_token_valid(token):
# emit('error', {'data': 'invalid token'})
# disconnect()
# else:
# emit('error', {'data': 'no token'})
# disconnect()
pass
@sockio.on("fabric")
def fabric(message):
module = message['module']
input_data = message['input_data']
if module not in modules:
available_modules = '\n'.join(modules)
emit(
'error', f"module {module} not found. Available modules are:\n{available_modules}")
disconnect()
else:
streamMessage(input_data, f"patterns/{module}/system.md")
disconnect()