diff --git a/tests/describe.PY b/tests/describe.PY new file mode 100755 index 0000000..4e1d844 --- /dev/null +++ b/tests/describe.PY @@ -0,0 +1,69 @@ +#! /Library/Frameworks/Python.framework/Versions/3.12/bin/python3 +# describe.py +# To fulfill the test of asking the LLMs to describe + +# Import modules. +import ollama +import json + +# Add source files. +IMPORTED = {'Strings': "data/datasets/strings.JSON", 'Prompts': "tests/config/prompts.json", 'Models': 'tests/config/models.JSON'} + +# Set up the main variables. +RESULTS = {}; + +# Read the files. +for NAME in list(IMPORTED.keys()): + try: + DATA = json.load(open(IMPORTED[NAME])) + except: + DATA = open(IMPORTED[NAME]).read() + + IMPORTED[NAME] = DATA; + +# Download the models. +def download_models(): + for MODEL_NAME in IMPORTED["Models"].keys(): + MODEL_ID = IMPORTED["Models"][MODEL_NAME]; + ollama.pull(MODEL_ID); + +def format_prompt(): + PROMPT = f"{IMPORTED['Prompts']["sample"]}\n"; + + for GENERATION_TYPE in IMPORTED['Strings']['training'].keys(): + for TEXT_NUMBER in range(len(IMPORTED['Strings']['training'][GENERATION_TYPE])): + PROMPT = f"{PROMPT}\n\n{GENERATION_TYPE}-written #{str(TEXT_NUMBER + 1)}: \nā€œ{'\n\n\t'.join(IMPORTED['Strings']['training'][GENERATION_TYPE][TEXT_NUMBER].strip().split("\n\n"))}ā€"; + + PROMPT = f"{PROMPT}\n\n{IMPORTED['Prompts']["description"]}"; + + return (PROMPT); + +# Execute the response. +def ask_AI(PROMPT): + if len(list(IMPORTED['Models'].keys())): + + for MODEL_NAME in list(IMPORTED['Models'].keys()): + MODEL_ID = IMPORTED['Models'][MODEL_NAME]; + RESULTS[MODEL_NAME] = (ollama.generate(model=MODEL_ID, prompt=PROMPT))['response'].strip(); + + return (RESULTS); + +# Display the outputs. +# Save all of the strings. +# Parameters: +# filename: The file name +def save_data(**parameters): + OUTPUT = parameters['dictionary']; + + if (parameters['filename'].strip()): + with open(parameters['filename'], 'w') as file: + json.dump(OUTPUT, file); + +# Execute the script. +download_models(); +PROMPT = format_prompt(); +print(f"Using prompt: \n\t|\t{'\n\t|\t'.join(PROMPT.split("\n"))}"); +RESULTS = ask_AI(PROMPT); +save_data(dictionary=RESULTS, filename='tests/outputs/descriptions.JSON') + +