From 5258b620ab1f2c964c77bea3d3bfae1fe9a4db14 Mon Sep 17 00:00:00 2001 From: davidshwn Date: Mon, 2 Feb 2026 14:51:34 +0100 Subject: [PATCH] added readme and setup for install --- .gitignore | 3 + ProjectCreator.py | 171 -------------------------------------------- modules/__init__.py | 0 modules/init.py | 41 ----------- requirements.txt | 1 - 5 files changed, 3 insertions(+), 213 deletions(-) delete mode 100644 ProjectCreator.py delete mode 100644 modules/__init__.py delete mode 100644 modules/init.py delete mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore index e0e8c99..5f79a1d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ __pycache__ .DS_Store +build +ProjectCreator.egg-info +dist diff --git a/ProjectCreator.py b/ProjectCreator.py deleted file mode 100644 index 430ce36..0000000 --- a/ProjectCreator.py +++ /dev/null @@ -1,171 +0,0 @@ -# import libraries -import argparse -import os - -from modules.init import init -from modules.review import review - -# load the classes -initClass = init() -reviewClass = review() - - -""" -Parser functions -""" - - -# init funtion -def initParser(args): - print("Creating project idea. This may take some time based on hardware.") - # get systemPrompt - print("Creating system prompt. (1/3)") - systemPrompt: str = initClass.generatePrompt(args) - # print(systemPrompt) - - # Let the LLM generate a system prompt - print("Generating Instructions (.MD) file. (2/3)") - instructions = initClass.generateMd(systemPrompt, args.model) - - print(f"Creating instructions file. (3/3)") - with open(f"{os.path.abspath(os.getcwd())}/Instructions.md", "w") as f: - f.write(instructions) - - print( - f"-- COMPLETED --\nInstructions: {os.path.abspath(os.getcwd())}/Instructions.md" - ) - return - - -def reviewParser(args): - print("Generating review. This may take some time based on hardware.") - print( - "THE LLM MAY ACCESS FILES AND IF NOT HANDLED PROPERLY MODIFY THEM. YOU WILL BE NOTIFIED WHEN THE LLM IS DOING SUCH ACTIONS." - ) - # get Instuctions - print("Getting instructions. (1/3)") - markdownFile: str = "" - with open(f"{os.path.abspath(os.getcwd())}/Instructions.md", "r") as f: - markdownFile = f.read() - - print("Generating Review (.MD) file. (2/3)") - review = reviewClass.generateReview( - providedModel=args.model, platform=args.platform, markdown=markdownFile - ) - - print("Creating Review MD file. (3/3)") - with open(f"{os.path.abspath(os.getcwd())}/Review.md", "w") as f: - f.write(review) - - print(f"-- COMPLETED --\nReview path: {os.path.abspath(os.getcwd())}/Review.md") - return - - -""" -Main class -""" - - -def main(): - # create the parser and subparser - parser = argparse.ArgumentParser( - description="Use LLM's to create project ideas. Powered by ollama!" - ) - subparsers = parser.add_subparsers(required=True) - - # init parser - parser_init = subparsers.add_parser( - "init", help="Creates a new project using LLM's" - ) - parser_init.add_argument( - "-m", - "--model", - help="Defines the ollama model. [Default; ministral-3]", - default="ministral-3", - required=False, - type=str, - ) - parser_init.add_argument( - "-l", - "--language", - help="Defines which programming language you want to create the project in. This will be send to the LLM [default: Any]", - required=False, - default="Any", - type=str, - ) - parser_init.add_argument( - "-f", - "--framework", - help="Defines a framework if prefered. [default; Not specified]", - required=False, - default="Not specified", - type=str, - ) - parser_init.add_argument( - "-e", - "--packages", - help="Defines if external packages are allowed", - required=False, - default=True, - type=bool, - ) - parser_init.add_argument( - "-d", - "--difficulty", - help="Set your difficulty to the LLM [Default; Beginner]", - default="Beginner", - required=False, - ) - parser_init.add_argument( - "-t", - "--time", - help="Set the estimated time you want to work on the project. [Default; 1 Hour]", - default="1 Hour", - type=str, - ) - parser_init.add_argument( - "-p", - "--project", - help="Set the type of project. (For example; CLI-app, Website, Etc) [Default; Any]", - default="Any", - type=str, - ) - parser_init.add_argument( - "-c", - "--custom", - help="Give the llm custom instructions if needed. [Default; None]", - default="none", - type=str, - ) - parser_init.set_defaults(func=initParser) - - # review parser - parser_review = subparsers.add_parser( - "review", help="Reviews project assignment [REQUIRES 'Instructions.md' FILE]" - ) - - parser_review.add_argument( - "-m", - "--model", - help="Defines the ollama model. [Default; ministral-3]", - default="ministral-3", - required=False, - type=str, - ) - - parser_review.add_argument( - "-p", - "--platform", - help="Defines the platform the user is on. [Default; Ubuntu]", - default="Ubuntu", - required=False, - type=str, - ) - parser_review.set_defaults(func=reviewParser) - - args = parser.parse_args() - args.func(args) - - -if __name__ == "__main__": - main() diff --git a/modules/__init__.py b/modules/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/modules/init.py b/modules/init.py deleted file mode 100644 index 2718513..0000000 --- a/modules/init.py +++ /dev/null @@ -1,41 +0,0 @@ -from ollama import ChatResponse, chat - - -class init: - def __init__(self) -> None: - pass - - def generateMd(self, sysPrompt, providedModel) -> str: - response: ChatResponse = chat( - model=providedModel, - messages=[ - { - "role": "system", - "content": sysPrompt, - }, - ], - ) - - return response["message"]["content"] - - def generatePrompt(self, args) -> str: - return f"""You will give the user a markdown formatted programming project they can work on. --- Details -- -Language: [[ {args.language} ]] -Framework: [[ {args.framework} ]] -External packages allowed: [[ {str(args.packages)} ]] -Difficulty: [[ {args.difficulty} ]] -Estimated Time the user want to spend on the project: [[ {args.time} ]] -Type of project: [[ {args.project} ]] -Custom instructions: [[ {args.custom} ]] - --- information -- -- Align the project based on this information. -- This project is intended for users that want to practise their programming skills. -- When creating the markdown file always include the following things; header, instruction, final product, rules, general information provided by user (Details), Technical Requirements, and lastly the points (score) -- do NOT use markdown blocks as your response will immediately be injected into a .MD file upon completion. -- If the user did not provide a Programming Language (based on details) the assign the user one based on the project. Clearly define the language in the MD file -- If there is a framework (such as symfony) included (or a engine such as unity) or a library/package that requires a advanced instalation (based on difficulty), provide a installation guide in the MD file and/or a cheatsheet unless the assistant is unsure on how to set it up. -- Make the user decide on their own which packages they want to use unless explicitly specified in Custom instructions and/or General Details -- Do NOT provide any code structures or samples (unless required by previous instructions). Let the user figure it out on its own as this is intended to be a challenge -""" diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 9585b03..0000000 --- a/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -ollama \ No newline at end of file