DEV Community

SupermanSpace
SupermanSpace

Posted on

4 1 1 1

Create Folder Structure using LLM

I wanted to share an update on a project I worked on some time ago. I've made some changes to the code for creating project structures using LLM. Here’s the code:

import json
import os
import cohere

# Initialize the Cohere client with a more secure approach
co = cohere.Client(api_key='YOUR_COHERE_KEY')

def create_project_structure(structure, base_path="/content/"):
    """
    Create a directory and file structure based on a nested dictionary.
    """
    try:
        for folder, files in structure.items():
            folder_path = os.path.join(base_path, folder)
            os.makedirs(folder_path, exist_ok=True)
            for file_name, content in files.items():
                file_path = os.path.join(folder_path, file_name)
                if isinstance(content, dict):
                    create_project_structure(content, base_path=folder_path)
                else:
                    with open(file_path, "w") as file:
                        file.write(content)
        return "Project structure created successfully."
    except Exception as e:
        return f"An error occurred: {str(e)}"

# JSON schema for the function argument
tools = [{
    "name": "create_project_structure",
    "description": "Create an entire project structure with specified files and contents.",
    "parameter_definitions": {
        "structure": {
            "description": "Dictionary specifying folders and files with their contents.",
            "type": "dict",
            "required": True
        },
        "base_path": {
            "description": "Base path where the project structure will be created.",
            "type": "str",
            "required": False
        }
    }
}]

functions_map = {
    'create_project_structure': create_project_structure
}

# Placeholder for example user request and handling
message = "write complete flappy bird game using unity"
preamble = """
## Task & Context
Answer questions and handle requests on a variety of topics using appropriate tools and research methods.

## Style Guide
Respond in full sentences, using proper grammar and spelling, unless requested otherwise.
"""

# Simulate handling a user request
response = co.chat(
    message=message,
    tools=tools,
    preamble=preamble,
    model="command-r",
    force_single_step=True
)

# Process and execute the recommended tool calls
tool_results = []
for tool_call in response.tool_calls:
    output = functions_map[tool_call.name](**tool_call.parameters)
    tool_result = {
        "name": tool_call.name,
        "parameters": tool_call.parameters,
        "outputs": [output],
        "call": tool_call
    }
    tool_results.append(tool_result)

print("\nTool execution results:\n")
print(json.dumps(tool_results, indent=4))

# Handle the final response using the results from tool calls
final_response = co.chat(
    message=message,
    tools=tools,
    tool_results=tool_results,
    preamble=preamble,
    model="command-r",
    temperature=0.3,
    force_single_step=True
)

print("Final answer:")
print(final_response.text)
Enter fullscreen mode Exit fullscreen mode

Tweak it for your needs and best of luck 🤞

If you'd like to support my work, consider checking out my Patreon: Superman Space.

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up