diff --git a/README.md b/README.md new file mode 100644 index 0000000..6f1cb26 --- /dev/null +++ b/README.md @@ -0,0 +1,88 @@ +# go-ai-agent + +This repo contains the code for Thorsten Ball's "How to Build an Agent" post +(see [here](https://ampcode.com/how-to-build-an-agent)). + +## Setup + +This repo contains everything you need to get a development environment ready +to go through the tutorial. You'll first need to make sure `nix` and `direnv` +are installed. An anthropic API key is also required (one can be generated +[here](https://console.anthropic.com/)). + +### Install Nix + +Nix is package manager that allows us to "make reproducible, declarative and +reliable systems" (according to [their site](https://nixos.org/)). + +Nix can be installed using [the Determinate Systems +installer](https://github.com/DeterminateSystems/nix-installer). Run the +following command: + +```bash +curl -fsSL https://install.determinate.systems/nix | sh -s -- install --determinate +``` + +### Install Direnv + +[Direnv](https://direnv.net/) is a tool that enables us to quickly load and +unload an environemnt when we enter and leave a directory. + +Direnv is available in homebrew. Run the following command: + +```bash +brew install direnv +``` + +Once it's installed you'll have to configure your shell. If you're using ZSH +run the following: + +```bash +echo 'eval "$(direnv hook bash)"' >> ~/.zshrc +``` + +NOTE: You'll have to start a new terminal session for the changes in `~/.zshrc` +to take effect! + +For all other shells, refer [here](https://direnv.net/docs/hook.html). + +### Configure Anthropic API Key + +First, generate an Anthropic API key from [the +console](https://console.anthropic.com/). This repo has a `.envrc` (direnv +configuration file) that will read from a `.env` file (not committed to this +repo since we'll use it to house secrets). Once you have your API key, run the +following (make sure to replace the placeholder text with your actual API key): + +```bash +echo 'export ANTHROPIC_API_KEY=' > .env +``` + +### Build the Development Environment + +We're now ready to build the development environment. Direnv configuration +files (`.envrc` files) have to be explicitly trusted before they take effect. +Run the following to build and automatically enter the development environment: + +```bash +direnv allow +``` + +Once that runs, nix will do its thing and set up the environment. This might +take a bit. Once it's done you can check to see if it worked by running the following: + +```bash +which go +``` + +This should spit out a value like +`/nix/store/fd2s1z3why92qn8w7j6r0xlarikpv27v-go-1.24.2/bin/go`. + +## Follow the Tutorial + +You can now follow [the tutorial](https://ampcode.com/how-to-build-an-agent). +This repo also has some branches containing the tutorial code as well if you'd +prefer to not copy/paste (or preferably type it out) yourself. Branches +`step1`, `step2`, `step3`, `step4` correspond to the different parts of the +tutorial. `step1` is the initial setup of the conversation loop and the other +steps correspond to the three tools you'll implement as part of the tutorial.