Dream on.
This is not a technical problem, this is a business problem. Sadly a lot of engineers don't understand that.
The thing is, I've managed to get this working as an interface for a whole segment of stuff that was a pain in the ass before. My task list is all in one place for the first time, and it talks! With words! I have a pair programmer, who is excited to do stuff, on the command line, 24/7. They also have encyclopedic knowledge of anything that isn't a super deep cut, so I can move through more spaces and find solutions that I never would have dreamed of due to the cognitive load of sifting through textbooks and documentation just to create a [ insert more or less anything here].
If you're looking at the folks here who are getting excited and wondering "What's up with *them*?, this is it. It's not about the Next Big Thing so much as it's about "Holy shit, computers are magic again". For themselves.
Of course, I can speak for some of us. For sure, the hungry lets-make-a-startup folks exist and are currently working on doing that - and that's fine. But to me that's boring. Commerce and markets and economies are toxic to creativity. I've tried Bing-with-GPT and it's AWFUL compared to GPT-4, despite being sorta the same underlying thing.
I'm perfectly happy paying OpenAI to use the thing they built, for myself, for now. I am seriously looking forward to migrating to locally run models, once we get there (and we will).
They couldn't have released this at a better time, I have about 30 plugins and i'd say it manages to get the right one about 90% of the time as opposed to about 70 with my hacked together version (but I guess I wrote it and know what to say so maybe that's a bit skewed)
@Tool
def add_todo(title, project=None) -> str:
"""
Add a new TODO.
Args:
title (str): A brief description of the task
project (str, optional): A project to add the todo to, if requested
"""
logger.debug(f"Adding task: {title}")
task = Task(tw, description=title, project=project)
task.save()
return f"Added [ {title} ] to the { project + ' ' if project else '' }TODO list."
OpenAI is already on it. The latest gen of GPT-3 and -4 are finetuned to respond to "do this thing" commands with JSON structured to:
- provide the name of a given function call
- provide arguments to that function call
it's "early stage", which in this case probably means "good enough to be useful within a month or two", given the rate at which these things have been developing.
Anecdotally, I've been playing with giving the models instructions like:
"When asked to perform a task that you need a tool to accomplish, you will call the tool according to its documentation by this format:
TOOL_NAME(*args)
Below you will find the documentation for your tools."
...and I've gotten it working pretty damn well (not even with the JSON-finetuned models, mind you). All you really need is python-style docstrings and a minimal parser and you're off to the races. I recommend anyone interested play with it a bit.