willwoodward / woodwork-engine

An AI Agent IaC tool that aims to make developing and deploying AI Agents easier.
GNU General Public License v3.0
1 stars 0 forks source link

Document APIs #136

Open willwoodward opened 1 month ago

willwoodward commented 1 month ago

Documentation should be written inside the docs section of woodwork-website.

richard-salam commented 1 month ago

Please explain further.

willwoodward commented 1 month ago

Hi @richard-salam , apologies for not getting back to you sooner!

Thanks for prompting me - apologies for my very cryptic issue 😂 I'll be pasting in some of what I've written to reply to another issue, genuinely feel free to ask any follow-up questions!


Just thought I'd provide some context to woodwork-engine if you aren't aware, feel free to skip all this but hopefully its helpful if you have little clue what's going on due to my random issue ramblings and terribly documented code!

Woodwork-engine is the IaC tool for making AI Agents. There's quite a few different "components" that make up an agent (An LLM, tools, knowledge bases, memory etc). You can see these clearly in the file structure, under woodwork/components. Each component usually has a bunch of different "component types" - for example, you could have an OpenAI LLM or a HuggingFace LLM, both could have different configuration settings.


Now onto a bit of broader context about the documentation efforts:

As you can probably tell, I have very little documentation already. Something I am working on is having two forms of documentation - one for users (people who just want to use the tool), and developers, who work on actually writing code for the repo. The priority is user documentation - you'll be able to see loads of issues I've got for this.

Currently, the documentation is in the woodwork-website repo, under client/src/docs. So far, it is just a very very simple NextJS website, deployed via Netlify to https://woodwork-engine.com/docs. If you copy the getting-started file as a template, it should be pretty self explanatory to add a new file.


A bit more practical advice now:

API components at the moment are either functions, or a web API. They allow you to interface with an agent, packaging up either functions or endpoints as tools. I have a couple of examples using them in the repo.

What would be incredibly helpful in terms of documentation for this would be to explain the API component briefly, and then to go into talking about each of the API types. I'd love if you could mention the configs for each, just all keys and their expected values, and whether they are required or not. I've done this slightly weirdly in the code, so if you need a hand with understanding my jank then I'm more than happy to help.

Other than that, I'm open to hearing your ideas and inputs on how to make things better - even if its a small thing like making nested pages of documentation, so you can have a whole page for APIs, and then subpages for each type.

I'd really recommend getting this set up on your machine and having a play around yourself!


Thanks so much for reaching out and getting involved btw, genuinely pop me a question anytime and I'll be happy to help! Would be more than happy to hop on a call to help get you set up if needed!