2024-04-01 14:39:33 +00:00
from . utils import Standalone , Update , Setup , Alias , run_electron_app
2024-02-08 20:54:42 +00:00
import argparse
import sys
import os
script_directory = os . path . dirname ( os . path . realpath ( __file__ ) )
2024-02-18 18:25:07 +00:00
2024-02-08 20:54:42 +00:00
2024-02-09 12:52:07 +00:00
def main ( ) :
2024-02-08 20:54:42 +00:00
parser = argparse . ArgumentParser (
description = " An open source framework for augmenting humans using AI. "
)
parser . add_argument ( " --text " , " -t " , help = " Text to extract summary from " )
parser . add_argument (
2024-02-18 21:34:47 +00:00
" --copy " , " -C " , help = " Copy the response to the clipboard " , action = " store_true "
2024-02-08 20:54:42 +00:00
)
2024-03-04 22:09:25 +00:00
parser . add_argument (
2024-04-05 14:25:04 +00:00
' --agents ' , ' -a ' ,
help = " Use praisonAI to create an AI agent and then use it. ex: ' write me a movie script ' " , action = " store_true "
2024-03-04 22:09:25 +00:00
)
2024-02-08 20:54:42 +00:00
parser . add_argument (
" --output " ,
" -o " ,
help = " Save the response to a file " ,
nargs = " ? " ,
const = " analyzepaper.txt " ,
default = None ,
)
2024-04-20 01:23:29 +00:00
parser . add_argument ( ' --session ' , ' -S ' ,
help = " Continue your previous conversation. Default is your previous conversation " , nargs = " ? " , const = " default " )
2024-04-20 16:06:02 +00:00
parser . add_argument (
2024-04-20 16:10:47 +00:00
' --clearsession ' , help = " deletes indicated session. Use ' all ' to delete all sessions " )
2024-04-20 15:56:01 +00:00
parser . add_argument ( ' --sessionlog ' , help = " View the log of a session " )
2024-04-20 16:06:02 +00:00
parser . add_argument (
' --listsessions ' , help = " List all sessions " , action = " store_true " )
2024-04-01 14:45:45 +00:00
parser . add_argument (
" --gui " , help = " Use the GUI (Node and npm need to be installed) " , action = " store_true " )
2024-02-08 20:54:42 +00:00
parser . add_argument (
" --stream " ,
" -s " ,
help = " Use this option if you want to see the results in realtime. NOTE: You will not be able to pipe the output into another command. " ,
action = " store_true " ,
)
parser . add_argument (
" --list " , " -l " , help = " List available patterns " , action = " store_true "
)
2024-04-01 22:10:04 +00:00
parser . add_argument (
' --temp ' , help = " set the temperature for the model. Default is 0 " , default = 0 , type = float )
parser . add_argument (
' --top_p ' , help = " set the top_p for the model. Default is 1 " , default = 1 , type = float )
parser . add_argument (
' --frequency_penalty ' , help = " set the frequency penalty for the model. Default is 0.1 " , default = 0.1 , type = float )
parser . add_argument (
' --presence_penalty ' , help = " set the presence penalty for the model. Default is 0.1 " , default = 0.1 , type = float )
2024-02-18 18:25:07 +00:00
parser . add_argument (
2024-03-07 01:20:21 +00:00
" --update " , " -u " , help = " Update patterns. NOTE: This will revert the default model to gpt4-turbo. please run --changeDefaultModel to once again set default model " , action = " store_true " )
2024-02-08 20:54:42 +00:00
parser . add_argument ( " --pattern " , " -p " , help = " The pattern (prompt) to use " )
parser . add_argument (
" --setup " , help = " Set up your fabric instance " , action = " store_true "
)
2024-03-06 03:37:07 +00:00
parser . add_argument ( ' --changeDefaultModel ' ,
2024-03-07 14:37:25 +00:00
help = " Change the default model. For a list of available models, use the --listmodels flag. " )
2024-03-06 01:10:35 +00:00
2024-02-08 20:54:42 +00:00
parser . add_argument (
2024-04-20 01:23:29 +00:00
" --model " , " -m " , help = " Select the model to use "
2024-02-08 20:54:42 +00:00
)
parser . add_argument (
" --listmodels " , help = " List all available models " , action = " store_true "
)
2024-03-12 16:59:57 +00:00
parser . add_argument ( ' --remoteOllamaServer ' ,
2024-05-02 12:12:15 +00:00
help = ' The URL of the remote ollamaserver to use. ONLY USE THIS if you are using a local ollama server in an non-default location or port ' )
2024-02-18 21:34:47 +00:00
parser . add_argument ( ' --context ' , ' -c ' ,
2024-02-18 18:25:07 +00:00
help = " Use Context file (context.md) to add context to your pattern " , action = " store_true " )
2024-02-08 20:54:42 +00:00
args = parser . parse_args ( )
home_holder = os . path . expanduser ( " ~ " )
config = os . path . join ( home_holder , " .config " , " fabric " )
config_patterns_directory = os . path . join ( config , " patterns " )
2024-02-18 21:48:47 +00:00
config_context = os . path . join ( config , " context.md " )
2024-02-08 20:54:42 +00:00
env_file = os . path . join ( config , " .env " )
if not os . path . exists ( config ) :
os . makedirs ( config )
if args . setup :
Setup ( ) . run ( )
2024-03-13 18:59:24 +00:00
Alias ( ) . execute ( )
2024-02-08 20:54:42 +00:00
sys . exit ( )
if not os . path . exists ( env_file ) or not os . path . exists ( config_patterns_directory ) :
print ( " Please run --setup to set up your API key and download patterns. " )
sys . exit ( )
if not os . path . exists ( config_patterns_directory ) :
Update ( )
2024-02-21 11:19:54 +00:00
Alias ( )
2024-02-08 20:54:42 +00:00
sys . exit ( )
2024-03-06 03:37:07 +00:00
if args . changeDefaultModel :
Setup ( ) . default_model ( args . changeDefaultModel )
sys . exit ( )
2024-04-01 14:39:33 +00:00
if args . gui :
run_electron_app ( )
sys . exit ( )
2024-02-08 20:54:42 +00:00
if args . update :
Update ( )
2024-02-21 11:19:54 +00:00
Alias ( )
2024-02-08 20:54:42 +00:00
sys . exit ( )
2024-02-18 21:48:47 +00:00
if args . context :
if not os . path . exists ( os . path . join ( config , " context.md " ) ) :
print ( " Please create a context.md file in ~/.config/fabric " )
sys . exit ( )
2024-04-05 14:25:04 +00:00
if args . agents :
standalone = Standalone ( args )
text = " " # Initialize text variable
# Check if an argument was provided to --agents
if args . text :
text = args . text
else :
text = standalone . get_cli_input ( )
if text :
standalone = Standalone ( args )
standalone . agents ( text )
sys . exit ( )
2024-04-20 01:23:29 +00:00
if args . session :
from . helper import Session
session = Session ( )
if args . session == " default " :
session_file = session . find_most_recent_file ( )
if session_file is None :
args . session = " default "
else :
args . session = session_file . split ( " / " ) [ - 1 ]
2024-04-20 15:44:08 +00:00
if args . clearsession :
from . helper import Session
session = Session ( )
session . clear_session ( args . clearsession )
if args . clearsession == " all " :
print ( f " All sessions cleared " )
else :
print ( f " Session { args . clearsession } cleared " )
sys . exit ( )
2024-04-20 15:56:01 +00:00
if args . sessionlog :
from . helper import Session
session = Session ( )
print ( session . session_log ( args . sessionlog ) )
sys . exit ( )
2024-04-20 16:06:02 +00:00
if args . listsessions :
from . helper import Session
session = Session ( )
session . list_sessions ( )
sys . exit ( )
2024-03-06 22:35:46 +00:00
standalone = Standalone ( args , args . pattern )
2024-02-08 20:54:42 +00:00
if args . list :
try :
2024-02-22 03:01:22 +00:00
direct = sorted ( os . listdir ( config_patterns_directory ) )
2024-02-08 20:54:42 +00:00
for d in direct :
print ( d )
sys . exit ( )
except FileNotFoundError :
print ( " No patterns found " )
sys . exit ( )
if args . listmodels :
2024-05-14 22:48:25 +00:00
gptmodels , localmodels , claudemodels , googlemodels = standalone . fetch_available_models ( )
2024-03-06 22:35:46 +00:00
print ( " GPT Models: " )
for model in gptmodels :
print ( model )
print ( " \n Local Models: " )
for model in localmodels :
print ( model )
print ( " \n Claude Models: " )
for model in claudemodels :
2024-03-06 15:10:30 +00:00
print ( model )
2024-05-14 22:48:25 +00:00
print ( " \n Google Models: " )
for model in googlemodels :
print ( model )
2024-02-08 20:54:42 +00:00
sys . exit ( )
if args . text is not None :
text = args . text
else :
2024-02-10 13:08:55 +00:00
text = standalone . get_cli_input ( )
2024-02-18 18:25:07 +00:00
if args . stream and not args . context :
2024-03-12 16:59:57 +00:00
if args . remoteOllamaServer :
standalone . streamMessage ( text , host = args . remoteOllamaServer )
else :
standalone . streamMessage ( text )
2024-02-24 21:39:48 +00:00
sys . exit ( )
2024-02-18 18:25:07 +00:00
if args . stream and args . context :
2024-02-18 21:48:47 +00:00
with open ( config_context , " r " ) as f :
2024-02-18 18:25:07 +00:00
context = f . read ( )
2024-03-12 16:59:57 +00:00
if args . remoteOllamaServer :
standalone . streamMessage (
text , context = context , host = args . remoteOllamaServer )
else :
standalone . streamMessage ( text , context = context )
2024-02-24 21:39:48 +00:00
sys . exit ( )
2024-02-18 18:25:07 +00:00
elif args . context :
2024-02-18 21:48:47 +00:00
with open ( config_context , " r " ) as f :
2024-02-18 18:25:07 +00:00
context = f . read ( )
2024-03-12 16:59:57 +00:00
if args . remoteOllamaServer :
standalone . sendMessage (
text , context = context , host = args . remoteOllamaServer )
else :
standalone . sendMessage ( text , context = context )
2024-02-24 21:39:48 +00:00
sys . exit ( )
2024-02-08 20:54:42 +00:00
else :
2024-03-12 16:59:57 +00:00
if args . remoteOllamaServer :
standalone . sendMessage ( text , host = args . remoteOllamaServer )
else :
standalone . sendMessage ( text )
2024-02-24 21:39:48 +00:00
sys . exit ( )
2024-02-09 12:52:07 +00:00
2024-02-18 18:25:07 +00:00
2024-02-09 12:52:07 +00:00
if __name__ == " __main__ " :
main ( )