added readme and setup for install

This commit is contained in:
2026-02-02 14:51:34 +01:00
parent 75617c37fa
commit 5258b620ab
5 changed files with 3 additions and 213 deletions

3
.gitignore vendored
View File

@@ -1,2 +1,5 @@
__pycache__
.DS_Store
build
ProjectCreator.egg-info
dist

View File

@@ -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()

View File

View File

@@ -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
"""

View File

@@ -1 +0,0 @@
ollama