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)
Tweak it for your needs and best of luck 🤞
If you'd like to support my work, consider checking out my Patreon: Superman Space.
Top comments (0)