4 ms·
> Hoping for one of these with an open API that anyone could integrate whatever they want with, I am not holding my breath here. OpenAI is already on it. The
by pksebben 3y ago
> Hoping for one of these with an open API that anyone could integrate whatever they want with, I am not holding my breath here.
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.
- amanaplanacanal 3y agoEarly stage might mean good enough to use in a month or two or it might mean “full self driving this year”. There isn’t any way to tell until it happens.
- janoc 3y agoAnd everyone will want to funnel their data and pay OpenAI/Microsoft in order to be allowed to implement a basically slightly better Alexa? Dream on. This is not a technical problem, this is a business problem. Sadly a lot of engineers don't understand that.
- pksebben 3y agoOh, I think you've misunderstood me. Business problems are someone else's gig - I have no intention in making this a product or making money off it. It's for me. 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).
- aarong11 3y agoJust before the point they built this, I was already chaining queries together to do this. I built a plugin system with bits of JS code that are eval'd and arguments injected. 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)
- pksebben 3y agoI've found that GPT really like "google style" python documentation. You need to have a chunk of system prompt explain that it should be 'using the tools according to their documentation etc etc', but once you've dialed that in a little stuff like this works a charm (the docstring is what the LLM sees): @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."