Welcome to the AIA25-Studio-Agent template repository! This serves as a starting point for students in the AIA25-Studio class to create their design assistant copilots. The goal of the project is to orchestrate Large Language Models (LLMs) to assist in architectural design tasks. The assistant copilots can be connected to platforms such as Grasshopper in Rhino, Revit, or web apps, depending on your needs, but that is beyond the scope of this starting template.
The project follows a modular directory structure, which allows for easy extension and customization.
AIA25-Studio-Agent/
│
├── llm_calls.py # Contains all the calls to the LLM API with different system prompts.
├── main.py # The main pipeline that orchestrates calling LLM functions and contains business logic.
│
├── utils/ # Utility functions.
│ ├── rag_utils.py # Functions related to Retrieval-Augmented Generation (RAG).
│ └── llm_calls.gh # An example Grasshopper script calling this project as a Flask App.
│
├── server/ # Server-side logic.
│ ├── keys.py # API keys (not uploaded to GitHub, must be created locally).
│ ├── config.py # Contains the logic to decide if the project runs with a local or cloud LLM.
│ └── gh_server.py # A Flask App server that answers Grasshopper requests.
│
├── knowledge/ # Directory for knowledge databases.
│ └── embeddings.json # Storage for embeddings.
To get started, clone this repository to your local machine:
git clone https://github.com/your-username/aia25-studio-agent.git
cd aia25-studio-agentThen, install the required dependencies:
pip install -r requirements.txt-
API Keys
- Navigate to the
server/directory and create akeys.pyfile. - Add your API keys or authentication credentials here. This file is not uploaded to GitHub for security reasons.
- Navigate to the
-
Local or Cloud LLM Configuration
- In the
server/config.pyfile, you will find the logic to switch between using a local LLM or a cloud-based LLM. - Customize this file to select the appropriate LLM for your project. You can add any new local models in this configuration file.
- In the
-
Adding New LLM Calls
If you need to add new LLM calls, modify thellm_calls.pyfile. This file is where you define different system prompts and interface with the LLM API. -
Creating New Knowledge Databases
To add new knowledge databases (such as post-processed embeddings), place the new JSON files in theknowledge/directory. Modifyembeddings.jsonor add new files To learn how to create the embeddings, visit my other repository Knowledge-Pool-RAG. -
Main Pipeline
Themain.pyfile orchestrates the pipeline for calling LLM functions and integrating the responses into your design workflow. You can expand this file as needed to suit your design assistant copilot’s business logic. -
Utility Functions
Theutils/rag_utils.pyfile contains functions related to Retrieval-Augmented Generation (RAG), useful for incorporating external knowledge into your LLM queries. You can add additional utility functions to extend the project’s capabilities.
Feel free to customize and extend this template to meet your specific design needs. The project structure is flexible, and you are encouraged to add new directories or files as necessary. However, be sure to keep the essential files organized and maintain the clear separation of concerns in the existing directory structure.