Git Product home page Git Product logo

maestro's Introduction

Maestro - A Framework for Claude Opus, GPT and local LLMs to Orchestrate Subagents

This Python script demonstrates an AI-assisted task breakdown and execution workflow using the Anthropic API. It utilizes two AI models, Opus and Haiku, to break down an objective into sub-tasks, execute each sub-task, and refine the results into a cohesive final output.

New:

Use Maestro with any APIs, Anthropic, Gemini, OpenAI, Cohere, etc.

Thanks to a rewrite of the codebase using LiteLLM, it's now much easier to select the model you want.

Simply

Set environment variables for API keys for the services you are using

os.environ["OPENAI_API_KEY"] = "YOUR KEY"

os.environ["ANTHROPIC_API_KEY"] = "YOUR KEY"

os.environ["GEMINI_API_KEY"] = "YOUR KEY"

Define the models to be used for each stage

ORCHESTRATOR_MODEL = "gemini/gemini-1.5-flash-latest"

SUB_AGENT_MODEL = "gemini/gemini-1.5-flash-latest"

REFINER_MODEL = "gemini/gemini-1.5-flash-latest"

Or gpt-3.5-turbo, etc.

First install litellm

pip install litellm

Afeter installing dependecies run

python maestro-anyapi.py

GPT-4o

The GPT script has been updated from the ground up to support the code capabilities of GPT-4o

Afeter installing dependecies run

python maestro-gpt4o.py

Run locally with LMStudio or Ollama

Lmstudio

First download the app here https://lmstudio.ai/

Then run the local server using your preferred method. I also recommend removing any system prompt for the app (leave your prompt field empty so it can take advantage of the script prompts).

Then

python maestro-lmstudio.py

Ollama

Mestro now runs locally thanks to the Ollama platform. Experience the power of Llama 3 locally!

Before running the script

Install Ollama client from here https://ollama.com/download

then

pip install ollama

And

ollama.pull('llama3:70b')

This will depend on the model you want to use it, you only need to do it once or if you want to update the model when a new version it's out. In the script I am using both versions but you can customize the model you want to use

ollama.pull('llama3:70b') ollama.pull('llama3:8b')

Then

python maestro-ollama.py

Highly requested features

  • GROQ SUPPORT Experience the power of maestro thanks to Groq super fast api responses.
pip install groq

Then

python maestro-groq.py
  • SEARCH ๐Ÿ”

Now, when it's creating a task for its subagent, Claude Opus will perform a search and get the best answer to help the subagent solve that task even better.

Make sure you replace your Tavil API for search to work

Get one here https://tavily.com/

  • GPT4 SUPPORT

Add support for GPT-4 as an orchestrator in maestro-gpt.py Simply

python maestro-gpt.py

After you complete your installs.

Features

  • Breaks down an objective into manageable sub-tasks using the Opus model
  • Executes each sub-task using the Haiku model
  • Provides the Haiku model with memory of previous sub-tasks for context
  • Refines the sub-task results into a final output using the Opus model
  • Generates a detailed exchange log capturing the entire task breakdown and execution process
  • Saves the exchange log to a Markdown file for easy reference
  • Utilizes an improved prompt for the Opus model to better assess task completion
  • Creates code files and folders when working on code projects.

Prerequisites

To run this script, you need to have the following:

  • Python installed
  • Anthropic API key
  • Required Python packages: anthropic and rich

Installation

  1. Clone the repository or download the script file.
  2. Install the required Python packages by running the following command:
pip install -r requirements.txt
  1. Replace the placeholder API key in the script with your actual Anthropic API key:
client = Anthropic(api_key="YOUR_API_KEY_HERE")

If using search, replace your Tavil API

tavily = TavilyClient(api_key="YOUR API KEY HERE")

Usage

  1. Open a terminal or command prompt and navigate to the directory containing the script.
  2. Run the script using the following command:
python maestro.py
  1. Enter your objective when prompted:
Please enter your objective: Your objective here

The script will start the task breakdown and execution process. It will display the progress and results in the console using formatted panels.

Once the process is complete, the script will display the refined final output and save the full exchange log to a Markdown file with a filename based on the objective.

Code Structure

The script consists of the following main functions:

  • opus_orchestrator(objective, previous_results=None): Calls the Opus model to break down the objective into sub-tasks or provide the final output. It uses an improved prompt to assess task completion and includes the phrase "The task is complete:" when the objective is fully achieved.
  • haiku_sub_agent(prompt, previous_haiku_tasks=None): Calls the Haiku model to execute a sub-task prompt, providing it with the memory of previous sub-tasks.
  • opus_refine(objective, sub_task_results): Calls the Opus model to review and refine the sub-task results into a cohesive final output.

The script follows an iterative process, repeatedly calling the opus_orchestrator function to break down the objective into sub-tasks until the final output is provided. Each sub-task is then executed by the haiku_sub_agent function, and the results are stored in the task_exchanges and haiku_tasks lists.

The loop terminates when the Opus model includes the phrase "The task is complete:" in its response, indicating that the objective has been fully achieved.

Finally, the opus_refine function is called to review and refine the sub-task results into a final output. The entire exchange log, including the objective, task breakdown, and refined final output, is saved to a Markdown file.

Customization

You can customize the script according to your needs:

  • Adjust the max_tokens parameter in the client.messages.create() function calls to control the maximum number of tokens generated by the AI models.
  • Change the models to what you prefer, like replacing Haiku with Sonnet or Opus.
  • Modify the console output formatting by updating the rich library's Panel and Console configurations.
  • Customize the exchange log formatting and file extension by modifying the relevant code sections.

License

This script is released under the MIT License.

Acknowledgements

  • Anthropic for providing the AI models and API.
  • Rich for the beautiful console formatting.

Flask App Integration

We have now integrated a Flask app to provide a user-friendly interface for interacting with the Maestro framework. This addition allows users to input objectives and view results through a web interface, enhancing the overall usability of the tool.

Setting Up and Running the Flask App

To set up and run the Flask app, follow these steps:

  1. Ensure Flask is installed by running pip install Flask or by adding Flask to the requirements.txt file and running pip install -r requirements.txt.
  2. Navigate to the directory containing the Flask app files (app.py, templates/, and static/).
  3. Run the Flask app by executing python app.py in your terminal or command prompt.
  4. Access the web interface by opening a web browser and navigating to http://localhost:5000/.

The Flask app supports all features of the Maestro framework, allowing users to input objectives and view the orchestrated task breakdown and execution results in a structured and easy-to-read format.

UI Features

The Flask app includes the following UI features:

  • A form for inputting objectives.
  • A results display area where the orchestrated task breakdown and execution results are shown.
  • Basic styling for improved readability and user experience.

This integration aims to make the Maestro framework more accessible and user-friendly, providing an intuitive way for users to leverage the power of AI-assisted task breakdown and execution.

Updated Instructions for Running the Flask App

To run the Flask app with the updated file structure, follow these steps:

  1. Navigate to the flask_app directory.
  2. Execute python app.py to start the Flask server.
  3. Access the web interface by navigating to http://localhost:5000/ in your web browser.

This update ensures that all Flask app-related files are neatly organized within the flask_app folder, simplifying the project structure and making it easier to manage.

maestro's People

Contributors

cocktailpeanut avatar definitelynotsoftware avatar doriandarko avatar emre-koc avatar jhsu avatar micksabox avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

maestro's Issues

Windows can't write to file

Error using maestro, line 303, should have it forced to UTF-8 (crashed on Windows). Otherwise great, thanks for the framework!

Attribute error

AttributeError: 'Anthropic' object has no attribute 'messages
line 109, in
opus_result = opus_orchestrator(objective, previous_results)
line 26, in opus_orchestrator
opus_response = client.messages.create(

Generator gives up before completing the objective

It's a pretty neat idea but my attempts so far have ended up with shells rather than something functioning. I wonder what prompt will ensure that it finishes the job?

Example

See in this example it starts off really well and then gives up before it's finished.

Refactor the code

this is a good project, but you need to refactor the code and make different code files for different agents and different models for the opus and organize all the files in some directory.

Thanks

Add poetry support

Some users could work in complex environments on multiple projects that could have dependency conflicts. It would be good to support this project to be run in python virtual environment using poetry. It would still allow using maestro the exact same way by just calling it directly, or run in in the virtual environment with all needed libraries installed w/o affecting other projects.

maestro_qroq

Calling Opus to provide the refined final output for your objective: Traceback (most recent call last): File "/workspaces/maestro/maestro-groq.py", line 190, in <module> refined_output = opus_refine(objective, [result for _, result in task_exchanges], timestamp, sanitized_objective) File "/workspaces/maestro/maestro-groq.py", line 91, in opus_refine opus_response = client.chat.completions.create( File "/home/codespace/.local/lib/python3.10/site-packages/groq/resources/chat/completions.py", line 283, in create return self._post( File "/home/codespace/.local/lib/python3.10/site-packages/groq/_base_client.py", line 1225, in post return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls)) File "/home/codespace/.local/lib/python3.10/site-packages/groq/_base_client.py", line 920, in request return self._request( File "/home/codespace/.local/lib/python3.10/site-packages/groq/_base_client.py", line 1018, in _request raise self._make_status_error_from_response(err.response) from None groq.BadRequestError: Error code: 400 - {'error': {'message': 'Please reduce the length of the messages or completion.', 'type': 'invalid_request_error', 'param': 'messages', 'code': 'context_length_exceeded'}}

Getting error using maestro-gpt

Getting the following error on my first run using maestro-gpt. maestro.py still runs fine, I still have working APIs for both, etc.

Please, structure the script with clear comments explaining each section and placeholder. The aim of this sub-task is to โ”‚
โ”‚ lay a solid, clear foundation for the script, which future sub-tasks will build upon to fully realize the complex โ”‚
โ”‚ functionality described in the objectives. โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Sending task to subagent ๐Ÿ‘‡ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Traceback (most recent call last):
File "/maestro/maestro-gpt.py", line 181, in
sub_task_result = subagent(sub_task_prompt, subagent_tasks)
File "/maestro/maestro-gpt.py", line 69, in subagent
subagent_response = anthropic_client.messages.create(
NameError: name 'anthropic_client' is not defined

Repeated Tavily Bad Gateway URL errors crashing Maestro

When handing off tasks to Haiku, the following has been occurring repeatedly.

Traceback (most recent call last):
File "C:\Users\Spocksbrain\Documents\Code_Projects\maestro\maestro.py", line 246, in
sub_task_result = haiku_sub_agent(sub_task_prompt, search_query, haiku_tasks, use_search)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Spocksbrain\Documents\Code_Projects\maestro\maestro.py", line 102, in haiku_sub_agent
qna_response = tavily.qna_search(query=search_query)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Spocksbrain\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\tavily\tavily.py", line 68, in qna_search
search_result = self._search(query, search_depth=search_depth, include_answer=True, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Spocksbrain\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\tavily\tavily.py", line 42, in _search
response.raise_for_status() # Raises a HTTPError if the HTTP request returned an unsuccessful status code
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Spocksbrain\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\requests\models.py", line 1021, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 502 Server Error: Bad Gateway for url: https://api.tavily.com/search
PS C:\Users\Spocksbrain\Documents\Code_Projects\maestro>

Termination issue

There is repetitiveness when Orchestrator, Subagent, Refiner all are in sync, the program should terminate by giving the final output. Example as: Based on the conversation, it appears that we have reached a stalemate due to repetition. When this message starts repeating for Orchestrator and Subagent, program should stop delegating the task and conclude the final output and should terminate
image

image

anthropic.AuthenticationError: Error code: 401 - {'type': 'error', 'error': {'type': 'authentication_error', 'message': 'invalid x-api-key'}}

I'm running into an AuthenticationError with a 401 status code indicating an "invalid x-api-key" when trying to interact with the Anthropic API using the Claude Opus model.

Trace:

maestro$ python maestro-gpt.py
Please choose the orchestrator model (Claude Opus or GPT-4): Claude Opus 
Invalid choice. Please enter 'Claude Opus' or 'GPT-4': Claude Opus
Please enter your objective with or without a text file path: a playable version of pong where i use wasd to move                                                                         

Calling Orchestrator for your objective
Traceback (most recent call last):
  File "/home/taf/Dmyzer/search_engine/Prototypes/graphs/maestro/maestro-gpt.py", line 167, in <module>
    opus_result, file_content_for_subagent = opus_orchestrator(objective, file_content, previous_results)
  File "/home/taf/Dmyzer/search_engine/Prototypes/graphs/maestro/maestro-gpt.py", line 37, in opus_orchestrator
    opus_response = anthropic_client.messages.create(
  File "/home/taf/anaconda3/envs/llm_gym/lib/python3.10/site-packages/anthropic/_utils/_utils.py", line 277, in wrapper
    return func(*args, **kwargs)
  File "/home/taf/anaconda3/envs/llm_gym/lib/python3.10/site-packages/anthropic/resources/messages.py", line 678, in create
    return self._post(
  File "/home/taf/anaconda3/envs/llm_gym/lib/python3.10/site-packages/anthropic/_base_client.py", line 1232, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
  File "/home/taf/anaconda3/envs/llm_gym/lib/python3.10/site-packages/anthropic/_base_client.py", line 921, in request
    return self._request(
  File "/home/taf/anaconda3/envs/llm_gym/lib/python3.10/site-packages/anthropic/_base_client.py", line 1012, in _request
    raise self._make_status_error_from_response(err.response) from None
anthropic.AuthenticationError: Error code: 401 - {'type': 'error', 'error': {'type': 'authentication_error', 'message': 'invalid x-api-key'}}

I made a fresh key and tested it with:

from anthropic import Anthropic

client = Anthropic(api_key="sk-xxxxx")

message = client.messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Hello, Claude"}
    ]
)
print(message.content)

output:
[TextBlock(text='Hello! How can I assist you today?', type='text')]

I'm stumped at whats causing this error, any help would be appreciated.

Script starts but aborts with error: UnicodeEncodeError: 'charmap' codec can't encode character

I installed the python packages and added the API-Key but after asking for objective it shows this error:

Calling Opus for your objective
+- Opus Orchestrator ---------------------------------------------------------+
| Here is the next sub-task and prompt for the subagent: |
| |
| Sub-task: Define the core functionalities needed for a Python GUI to |
| control a rotating weapon platform (turret). |
| |
| Prompt: Please list out the key features and functionalities that would be |
| required in a Python-based graphical user interface to effectively monitor |
| and control a rotating weapon platform (turret). Consider things like: |
| - Displaying the current position/orientation of the turret |
| - Allowing the user to manually adjust the turret's position |
| - Showing video feed from any cameras on the turret |
| - Statuses of the turret's subsystems (e.g. power, targeting sensors, |
| weapon systems) |
| - Emergency stop button |
| - Firing controls and safety interlocks |
| The goal is to define the core set of capabilities the GUI would need to |
| include to enable an operator to use it to fully control the remote turret |
| system. Please provide the list of required GUI functions and a brief |
| description of each. |
+-------------------------Traceback (most recent call last):
File "C:\Users\dongle\git\maestro\maestro\maestro.py", line 125, in
opus_result = opus_orchestrator(objective, previous_results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\dongle\git\maestro\maestro\maestro.py", line 33, in opus_orchestrator
console.print(Panel(response_text, title=f"[bold green]Opus Orchestrator[/bold green]", title_align="left", border_style="green", subtitle="Sending task to Haiku \U0001f447"))
File "C:\Users\dongle\AppData\Local\Programs\Python\Python312\Lib\site-packages\rich\console.py", line 1673, in print
with self:
File "C:\Users\dongle\AppData\Local\Programs\Python\Python312\Lib\site-packages\rich\console.py", line 865, in exit
self._exit_buffer()
File "C:\Users\dongle\AppData\Local\Programs\Python\Python312\Lib\site-packages\rich\console.py", line 823, in _exit_buffer
self._check_buffer()
File "C:\Users\dongle\AppData\Local\Programs\Python\Python312\Lib\site-packages\rich\console.py", line 2027, in _check_buffer
legacy_windows_render(buffer, LegacyWindowsTerm(self.file))
File "C:\Users\dongle\AppData\Local\Programs\Python\Python312\Lib\site-packages\rich_windows_renderer.py", line 17, in legacy_windows_render
term.write_styled(text, style)
File "C:\Users\dongle\AppData\Local\Programs\Python\Python312\Lib\site-packages\rich_win32_console.py", line 442, in write_styled
self.write_text(text)
File "C:\Users\dongle\AppData\Local\Programs\Python\Python312\Lib\site-packages\rich_win32_console.py", line 403, in write_text
self.write(text)
File "C:\Users\dongle\AppData\Local\Programs\Python\Python312\Lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeEncodeError: 'charmap' codec can't encode character '\U0001f447' in position 23: character maps to

`

Never End

The discussion between the agents is super funny, it amuses me a lot, especially when it goes into a loop. Then you give them a task and they start discussing something else.
I'm using the ollama version and so far I haven't been able to finish anything, I left it to a small task to see when it finishes, 26 hours have passed and it's still going.

I think that in many aspects it is much better than Davin or CrewAI, but it needs to be tickled a little to complete a task.

Then the option for long term memory should be added, which saves everything in the /data folder in the same folder where the python file runs and for each task to create a new subfolder in the /data folder.

File reading

Is this just for writing code? Hah

Sorry reaaaaaallly dumb question but I didn't know where else to go.

Maestro can create the code for the task you want to achieve?

It's quite cool nonetheless but it's not an "assistant" or agent ala. autogpt or crewai?

Error using local language model llama3

C:\zxcv\maestro-main\maestro-main>python maestro-ollama.py
Please enter your objective with or without a text file path: Make me a snake game

Calling Ollama Orchestrator for your objective
โ•ญโ”€ Ollama Orchestrator โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ The task is complete: โ”‚
โ”‚ โ”‚
โ”‚ Since there are no previous sub-task results, I will start by breaking down the objective into the next sub-task. โ”‚
โ”‚ โ”‚
โ”‚ Next Sub-Task: โ”‚
โ”‚ Create a basic structure for the Snake Game, including the game board, snake object, and initial game state. โ”‚
โ”‚ โ”‚
โ”‚ Prompt for Subagent: โ”‚
โ”‚ โ”‚
โ”‚ "Create a Python program that initializes a 10x10 game board with empty spaces represented by zeros. Define a โ”‚
โ”‚ 'Snake' class with attributes: โ”‚
โ”‚ - head: the current position of the snake's head (initially at coordinates [5, 5]) โ”‚
โ”‚ - body: a list of tuples representing the positions of the snake's body parts โ”‚
โ”‚ - direction: the initial direction of the snake's movement ('up', 'down', 'left', or 'right') โ”‚
โ”‚ Set the initial game state by placing the snake on the board and displaying the first frame of the game. The game โ”‚
โ”‚ should not have any food items (or obstacles) yet. โ”‚
โ”‚ โ”‚
โ”‚ Please provide the Python code that accomplishes this task." โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Sending task to Ollama sub-agent ๐Ÿ‘‡ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

Calling Ollama to provide the refined final output for your objective:
โ•ญโ”€ Final Output โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Project Name: Snake Game โ”‚
โ”‚ โ”‚
โ”‚ Folder Structure: โ”‚
โ”‚ json โ”‚ โ”‚ <folder_structure> โ”‚ โ”‚ { โ”‚ โ”‚ "game": { โ”‚ โ”‚ "main.py": null, โ”‚ โ”‚ "settings.py": null, โ”‚ โ”‚ "snake.py": null, โ”‚ โ”‚ "ui.py": null โ”‚ โ”‚ }, โ”‚ โ”‚ "assets": { โ”‚ โ”‚ "images": { โ”‚ โ”‚ "snake.png": null, โ”‚ โ”‚ "food.png": null, โ”‚ โ”‚ "wall.png": null โ”‚ โ”‚ } โ”‚ โ”‚ }, โ”‚ โ”‚ "tests": { โ”‚ โ”‚ "__init__.py": null, โ”‚ โ”‚ "test_snake.py": null โ”‚ โ”‚ } โ”‚ โ”‚ } โ”‚ โ”‚ </folder_structure> โ”‚ โ”‚ โ”‚
โ”‚ Code Files: โ”‚
โ”‚ โ”‚
โ”‚ main.py: โ”‚
โ”‚ python โ”‚ โ”‚ '''Game main function''' โ”‚ โ”‚ from snake import Snake, Settings โ”‚ โ”‚ โ”‚ โ”‚ def main(): โ”‚ โ”‚ settings = Settings() โ”‚ โ”‚ snake = Snake(settings) โ”‚ โ”‚ while True: โ”‚ โ”‚ # game loop โ”‚ โ”‚ pass โ”‚ โ”‚ โ”‚ โ”‚ if __name__ == "__main__": โ”‚ โ”‚ main() โ”‚ โ”‚ โ”‚
โ”‚ โ”‚
โ”‚ settings.py: โ”‚
โ”‚ python โ”‚ โ”‚ class Settings: โ”‚ โ”‚ def __init__(self): โ”‚ โ”‚ self.board_size = (20, 20) # width, height โ”‚ โ”‚ self.snake_start_pos = (10, 10) โ”‚ โ”‚ self.food_spawns_per_frame = 1 โ”‚ โ”‚ โ”‚
โ”‚ โ”‚
โ”‚ snake.py: โ”‚
โ”‚ python โ”‚ โ”‚ from settings import Settings โ”‚ โ”‚ โ”‚ โ”‚ class Snake: โ”‚ โ”‚ def __init__(self, settings): โ”‚ โ”‚ self.settings = settings โ”‚ โ”‚ self.body = [(settings.snake_start_pos[0], settings.snake_start_pos[1])] โ”‚ โ”‚ self.direction = 'right' โ”‚ โ”‚ โ”‚ โ”‚ def move(self): โ”‚ โ”‚ # implement snake movement logic โ”‚ โ”‚ pass โ”‚ โ”‚ โ”‚ โ”‚ def grow(self): โ”‚ โ”‚ # implement snake growth logic โ”‚ โ”‚ pass โ”‚ โ”‚ โ”‚
โ”‚ โ”‚
โ”‚ ui.py: โ”‚
โ”‚ python โ”‚ โ”‚ from pygame import init as pygame_init, quit as pygame_quit โ”‚ โ”‚ from pygame import display as pygame_display โ”‚ โ”‚ โ”‚ โ”‚ class UI: โ”‚ โ”‚ def __init__(self): โ”‚ โ”‚ pygame_init() โ”‚ โ”‚ self.display = pygame_display.set_mode((800, 600)) โ”‚ โ”‚ โ”‚ โ”‚ def render(self, snake): โ”‚ โ”‚ # implement rendering logic โ”‚ โ”‚ pass โ”‚ โ”‚ โ”‚
โ”‚ Note: This is a basic outline of the project structure and code files. You will need to fill in the implementation โ”‚
โ”‚ details for each file. โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Project Folder Creation โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Created project folder: Make_me_a_snake_game โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Folder Creation โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Created folder: Make_me_a_snake_game\game โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Missing Code Content โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Code content not found for file: main.py โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Missing Code Content โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Code content not found for file: settings.py โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Missing Code Content โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Code content not found for file: snake.py โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Missing Code Content โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Code content not found for file: ui.py โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Folder Creation โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Created folder: Make_me_a_snake_game\assets โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Folder Creation โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Created folder: Make_me_a_snake_game\assets\images โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Missing Code Content โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Code content not found for file: snake.png โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Missing Code Content โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Code content not found for file: food.png โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Missing Code Content โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Code content not found for file: wall.png โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Folder Creation โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Created folder: Make_me_a_snake_game\tests โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Missing Code Content โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Code content not found for file: init.py โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Missing Code Content โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Code content not found for file: test_snake.py โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

Refined Final output:
Project Name: Snake Game

Folder Structure:

<folder_structure>
{
  "game": {
    "main.py": null,
    "settings.py": null,
    "snake.py": null,
    "ui.py": null
  },
  "assets": {
    "images": {
      "snake.png": null,
      "food.png": null,
      "wall.png": null
    }
  },
  "tests": {
    "__init__.py": null,
    "test_snake.py": null
  }
}
</folder_structure>

Code Files:

main.py:

'''Game main function'''
from snake import Snake, Settings

def main():
    settings = Settings()
    snake = Snake(settings)
    while True:
        # game loop
        pass

if __name__ == "__main__":
    main()

settings.py:

class Settings:
    def __init__(self):
        self.board_size = (20, 20)  # width, height
        self.snake_start_pos = (10, 10)
        self.food_spawns_per_frame = 1

snake.py:

from settings import Settings

class Snake:
    def __init__(self, settings):
        self.settings = settings
        self.body = [(settings.snake_start_pos[0], settings.snake_start_pos[1])]
        self.direction = 'right'

    def move(self):
        # implement snake movement logic
        pass

    def grow(self):
        # implement snake growth logic
        pass

ui.py:

from pygame import init as pygame_init, quit as pygame_quit
from pygame import display as pygame_display

class UI:
    def __init__(self):
        pygame_init()
        self.display = pygame_display.set_mode((800, 600))

    def render(self, snake):
        # implement rendering logic
        pass

Note: This is a basic outline of the project structure and code files. You will need to fill in the implementation
details for each file.

Full exchange log saved to 00-13-42_Make_me_a_snake_game.md

Script cannot read the content of a file provided with a file path

This issue arises in all 5 maestro scripts on my Windows 11 machine. The scripts cannot read the file and then, depending on which script, either take on the task to develop a Python script to read the file, or use a "made up" file content to illustrate what they would have done if there were any content.
The file content was: "What is the capital of France?".

image

Bug fix Download local language model

C:\Users\z5050>ollama.pull('llama3:70b')
'ollama.pull' is not recognized as an internal or external command,
operable program or batch file.

It should be a different command

ollama run llama3
ollama run llama3:70b
This command works fix it

Add search support on ollama

Please add search functionality like maestro.py on maestro-ollama.py .

It will be very helpful to use search functionality with llama3

UnicodeEncodeError.

Have also been seeing the following repeatedly, which blows up the session. Is there any way to increase the error handling to preserve the session?

Please note that the provided code and documentation serve as a starting point and may require further customization and refinement based on the specific requirements and constraints of the project.
Traceback (most recent call last):
File "C:\Users\Spocksbrain\Documents\Code_Projects\maestro\maestro.py", line 303, in
file.write(exchange_log)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.1008.0_x64__qbz5n2kfra8p0\Lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeEncodeError: 'charmap' codec can't encode characters in position 6303-6305: character maps to
PS C:\Users\Spocksbrain\Documents\Code_Projects\maestro>

File structure issue on ollama

When I use maestro-ollama.py the result's folder gets generated well but the MD files does not go into that folder, instead it gets placed on the root directory. Here are the images;
Screenshot_2
Screenshot_3
Screenshot_4

No error handling around empty messages

I have also run across this error a number of times.

Traceback (most recent call last):
File "C:\Users\Spocksbrain\Documents\Code_Projects\maestro\maestro.py", line 246, in
sub_task_result = haiku_sub_agent(sub_task_prompt, search_query, haiku_tasks, use_search)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Spocksbrain\Documents\Code_Projects\maestro\maestro.py", line 117, in haiku_sub_agent
haiku_response = client.messages.create(
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Spocksbrain\Documents\Code_Projects\maestro\maestor01\Lib\site-packages\anthropic_utils_utils.py", line 277, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Spocksbrain\Documents\Code_Projects\maestro\maestor01\Lib\site-packages\anthropic\resources\messages.py", line 681, in create
return self._post(
^^^^^^^^^^^
File "C:\Users\Spocksbrain\Documents\Code_Projects\maestro\maestor01\Lib\site-packages\anthropic_base_client.py", line 1239, in post
return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Spocksbrain\Documents\Code_Projects\maestro\maestor01\Lib\site-packages\anthropic_base_client.py", line 921, in request
return self._request(
^^^^^^^^^^^^^^
File "C:\Users\Spocksbrain\Documents\Code_Projects\maestro\maestor01\Lib\site-packages\anthropic_base_client.py", line 1019, in _request
raise self._make_status_error_from_response(err.response) from None
anthropic.BadRequestError: Error code: 400 - {'type': 'error', 'error': {'type': 'invalid_request_error', 'message': 'messages: text content blocks must be non-empty'}}
PS C:\Users\Spocksbrain\Documents\Code_Projects\maestro>

Error also when using Claude's models starting with the new update in the old one it still works

Error also when using Claude's models starting with the new update in the old one it still works in the previous script it still works starting with the new update there are errors all the time

C:\zxcv\maestro-main\maestro-main>python maestro.py
Please enter your objective with or without a text file path: Make me a snake game, including scoring and record keeping, and a 3D graphical interface
Do you want to use search? (y/n): n

Calling Orchestrator for your objective
Input Tokens: 224, Output Tokens: 373
Opus Orchestrator Cost: $0.03
โ•ญโ”€ Opus Orchestrator โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Here is the next sub-task to achieve the objective of making a snake game with scoring, record keeping, and a 3D โ”‚
โ”‚ graphical interface: โ”‚
โ”‚ โ”‚
โ”‚ Sub-task: Set up the basic game structure and 3D environment โ”‚
โ”‚ Create a new Python file and import the necessary libraries for 3D rendering (e.g. Pygame, OpenGL). โ”‚
โ”‚ Set up a basic game loop structure with initialization, main loop, and cleanup sections. โ”‚
โ”‚ Create a simple 3D environment using OpenGL primitives to represent the game board. โ”‚
โ”‚ Implement camera controls to allow the player to view the game board from different angles. โ”‚
โ”‚ Add basic lighting to the scene to enhance the 3D effect. โ”‚
โ”‚ โ”‚
โ”‚ Prompt for subagent: โ”‚
โ”‚ Your task is to set up the foundation for a 3D snake game using Python and OpenGL. Create a new Python file and โ”‚
โ”‚ import the required libraries for 3D rendering, such as Pygame and OpenGL. Set up a basic game loop structure with โ”‚
โ”‚ sections for initialization, the main loop, and cleanup. โ”‚
โ”‚ โ”‚
โ”‚ Use OpenGL primitives to create a simple 3D environment representing the game board. The game board should be a โ”‚
โ”‚ flat, rectangular surface. Implement camera controls that allow the player to view the game board from different โ”‚
โ”‚ angles using keyboard or mouse input. โ”‚
โ”‚ โ”‚
โ”‚ Add basic lighting to the scene to enhance the 3D effect and make the game board more visually appealing. Ensure โ”‚
โ”‚ that the lighting is balanced and does not obstruct the player's view of the game board. โ”‚
โ”‚ โ”‚
โ”‚ Test your code thoroughly to ensure that the game loop runs smoothly, the 3D environment is rendered correctly, and โ”‚
โ”‚ the camera controls and lighting work as expected. If you encounter any issues or have suggestions for improvement, โ”‚
โ”‚ please include them in your response. โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Sending task to Haiku ๐Ÿ‘‡ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Traceback (most recent call last):
File "C:\zxcv\maestro-main\maestro-main\maestro.py", line 234, in
sub_task_result = haiku_sub_agent(sub_task_prompt, search_query, haiku_tasks, use_search)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\zxcv\maestro-main\maestro-main\maestro.py", line 105, in haiku_sub_agent
haiku_response = client.messages.create(
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\z5050\miniconda3\Lib\site-packages\anthropic_utils_utils.py", line 275, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\z5050\miniconda3\Lib\site-packages\anthropic\resources\messages.py", line 678, in create
return self._post(
^^^^^^^^^^^
File "C:\Users\z5050\miniconda3\Lib\site-packages\anthropic_base_client.py", line 1208, in post
return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\z5050\miniconda3\Lib\site-packages\anthropic_base_client.py", line 897, in request
return self._request(
^^^^^^^^^^^^^^
File "C:\Users\z5050\miniconda3\Lib\site-packages\anthropic_base_client.py", line 988, in _request
raise self._make_status_error_from_response(err.response) from None
anthropic.BadRequestError: Error code: 400 - {'type': 'error', 'error': {'type': 'invalid_request_error', 'message': 'messages: text content blocks must be non-empty'}}

Cost of all models used

hi, can you add the cost of all the models used and price per token and the total price in the end and include price per different models use as an agent as well

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.