Convo-Lang originally started off as a prompt templating and conversation state management system. It gave me a way to load a prompt template into a chat interface and reuse the same code to handle sending messages between the user and an LLM. This was in the early days of OpenAI when DaVinci was the top model.
As Convo-Lang grow in complexity I created a VSCode extension for syntax highlighting to make templates easier to read and write. And as new patterns like RAG, JSON Mode and tool calling hit the scene I added support for them. Before long I had a pretty decent framework that was easy to integrate into TypeScript applications and solved most of my AI needs.
As I built more applications that used tool calling I realized that I was writing less TypeScript, and a good amount of the TypeScript I as writing was basic callback functions called by tools the LLM decided to invoke. At that point I realized if I created a simple scripting language that could do basic things like make an HTTP requests I could build the majority of my agents purely in Convo-Lang and encapsulate all of its logic a single file.
I found the idea of single file that encapsulated an agent in a simple text file very appealing, and then I did as I do. I ignore all of my other responsibilities as a developer for the next few days and built a thing \(ᵔᵕᵔ)/
After those few sleepless nights I had a full fledge programming language and a runtime and CLI that could execute it. It's been about a year and a half since then and I've continued to improve and refine the language.
Links:
Convo-Lang Docs - https://learn.convo-lang.ai/
GitHub - https://github.com/convo-lang/convo-lang
Core NPM package - https://www.npmjs.com/package/@convo-lang/convo-lang
All NPM package - https://www.npmjs.com/~convo-lang
VSCode extension - https://marketplace.visualstudio.com/items?itemName=iyio.con...
r/ConvoLang sub Reddit - https://www.reddit.com/r/ConvoLang/
Any stars on GitHub would be much appreciated, thank you.
Put that on the landing page.
---
The idea is that convo files will serve as decencies of target outputs and those outputs could be anything from React components to generated images or videos.
---
This should make for a declarative way of defining generated application and content in a way that is repeatable and easy to modify.
---
I'll implement the same caching strategy that `make` uses to minimize the number of tokens consumed as changes to convo files are made.
---
Anybody have any thoughts or suggestions?