Plugin Instructions. How can I format inputs the model creates

Howdy! So I haven’t gotten much sleep, and all the words I’m typing are from a guy losing his mind slowly so I apologize.

When it comes to giving plugin instructions, are there specific keywords that improve inputs generated by the model? I’m working on a few plugins, but I’ll just use my sandbox plugin as a reference here. Say I have an endpoint called stocks, which fetches data from an API like Alpha Vantage. I define what this endpoint does, describe the data it returns in detail, and of course, I give it the input format. The model then completely disregards the input format and returns parameters that aren’t real, nor did I specify them. I guess my questions are as follows:

  1. How can I make it so the model produces exactly formatted inputs? I mean, they need to be exact. Are there keywords I’m missing?
  2. When you have a thread going and text-DaVinci-002-plugins kicks in and uses your plugin, sometimes results are cut off, or a plugin just keeps going and going. Will it be possible at some point to have it so that if a plugin result doesn’t finish, it will automatically keep going until it’s done? For example, if I use Wolfram and I have a long problem, I would like it to keep going until it’s finished instead of cutting off half way. I mean you can tell it to continue; however, if you could have it do that automatically that would be great.
1 Like

One thing that really helped me was asking ChatGPT to write the endpoint descriptions. Promts like “Write the language descriptions for the endpoing that … (write spec of function you wrote)”

I have found it does a great job of understanding itself

2 Likes

Sorry, but I’m missing something here. text-DaVinci-002? you mean your chatGPT plugin is calling the text-DaVinci-002 model via the API? I’m not aware of any way to get text-DaVinci-002 to call a plugin… If you do mean what I think you mean, you might try calling a higher level model. I usually use gpt-3.5-turbo. It’s pretty low-cost and very effective.

I see; well the issue was that no matter how specific I got and no matter how detailed the endpoint descriptions were, it didn’t understand. I have examples in all my endpoint YAML files as well as descriptions the explain how it should format the input, and it just wouldn’t give.

Sorry for the confusion. Regarding text-DaVinci-002-plugins what I mean was when you start a new thread with a plugin, behind the scenes it calls a model called text-DaVinci-002-plugins which I guess determines what plugin to use. The text-DaVinci-002-plugins was irrelevant to the conversation; my apologies.

The problem I was facing was that no matter how descriptive my instructions were for certain endpoints, I could never get it to properly generate the right input, it would first do it the wrong way, then do it again and maybe on attempt three it would provide the correct input.

Ah. I think it uses text-DaVinci-002 at least in one case to generate the chat title on the left side of the page. Just a guess.
Yeah, I had a lot of trouble initially with that symptom. I eventually managed to straighten out my yaml, but I can’t claim to know what I did. I ended up putting all variables in the query part of the endpoint paths, and made sure all endpoint paths were distinct, but I’m not sure that was what resolved my issues.

Are you manually constructing your openapi.yaml? @ruv highly recommends fastapi to build plugins, it does a better job of ensuring the yaml corresponds to the function decorators. (apparently, anyway, it’s on my todo list but haven’t tried it yet)

Interesting.

I actually have a typescript project and I built out a system to read the commented docs in my API and then generate the YAML, it works well.

I found reading the Wolfram text is quite helpful. Wolfram is really good at following instructions.