While Drafts does not have any specific features built on integration with OpenAI’s artificial intelligence platform, it does provide scripting tools to make it easier to integrate with the OpenAI API. This provides a flexible way to incorporate ChatGPT and other OpenAI tools, like text completions, into your Drafts actions.
This article covers the set required to use such actions, as well as providing useful example actions which may provide value out-of-the-box for your workflows, or be a starting point for your own variations.
Setting Up OpenAI API Access
In order to use any of these integrations, you will need to create your own OpenAI account and generate an API key to use with Drafts. If you already have an OpenAI account (needed to use their own web-based tools), then great! If not, start by signing up for a free account.
OpenAI API access can be used as a free trial, but it is extremely limited. We recommend you visit your platform account’s billing page and configure paid account information if you plan to use these actions, or you will quickly run into rate limits of the free trial. You will also find that it is extremely inexpensive for an individual user, and you are only charged for usage; there is no repeating monthly cost.
Note about API cost: If you are worrying about racking up API costs, know that we have been developing and testing these features for weeks and have only run up a bill for a few cents in our OpenAI account
Lastly, visit your account’s API Keys page and “Create a new secret key” for use with Drafts. When you create this key, copy it to the clipboard, then return to Drafts. The first time you run an action that uses OpenAI, you will be prompted to enter this key.
Drafts will remember the API key in its Credentials system, so you will only need to complete this step once. If you need to change the API key used, you can forget it in the Credentials pane in Drafts settings, and the next time you use an OpenAI action, you will be prompted to enter a new key.
Example Actions
Below are a few example use-case actions that are meant as a starting point to demonstrate some ways OpenAI integration can be used in Drafts:
- Ask ChatGPT: This action will ask you to enter a text prompt for ChatGPT, and insert the result in the current draft.
- OpenAI: Translate Selection: Take the selected text in the editor, and ask ChatGPT to translate it into another language. You will be prompted to select from a list of languages.
- OpenAI: Correct Spelling in Selection: Submit the selected text to OpenAI’s text correction endpoint, asking it to correct any spelling mistakes. The result will replace the text in the editor.
- OpenAI: Write Code: Submit the selected text in the editor to OpenAI requesting it write code to fulfill the request. The result will replace the text in the editor. An example would be something like “Write a Javascript function to return the square root of a number”
-
ChatGPT: Modify Selection: Select text in a draft, then run this action and you will be prompted for an instruction to transform the text. Drafts will package that up in a prompt and replace the selected text with the result. You can do simple things like “uppercase”, but also combine commands for things like “uppercase and insert a
emoji between each word”.
Scripting with OpenAI
If you wish to build your own more advanced integrations, the OpenAI
script object is your starting point.
This object provides a convenience wrapper for making API calls to the OpenAI API. When making requests with this object, Drafts will take care of requesting and storing a user’s API key, providing the appropriate authentication headers, and parsing results into Javascript objects.
The object provides several additional simple request functions, like quickChatResponse
that abstract details about the API for simple use cases, but also the request
function to build more detailed requests with all the API options. Refer to OpenAI API documentation on request parameters and return values.
The below action is meant as a starting point and demonstrates the use of the request
function. Get more examples in the scripting reference:
Troubleshooting
If you run into issues running these actions, be sure to check the Action Log for detailed error messages. Common problems include rate limits, or improperly configured API keys.
Conclusion
If you create new and interesting actions with this functionality, we hope you’ll share them in the directory and forums!