go-ai-agent/README.md
2025-06-24 10:24:44 -07:00

89 lines
2.9 KiB
Markdown

# 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 zsh)"' >> ~/.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=<your generated 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.