@agiletortoise Can you please update Drafts to use Grok AI like OpenAI and Claude?
I believe the Grok AI API is Open AI-compatible, so the integration already exists, and can be used through the OpenAI
object…you would just need to modify the host/model values for the object to point to Grok.
For an example, see the Deep Seek or Perplexity examples I’ve posted that do the same for those services.
This seems to be working. This scripts modifies text selections with specific instructions.
// get your input selected text, and store range for later
const selection = editor.getSelectedText()
const [st, len] = editor.getSelectedRange()
// Prompts
let f = () => {
let instruction = `Revise the provided input to make it concise, clear, and informative, adhering to a semi-formal tone. Follow Canadian English spelling and conventions. Preserve the abbreviation 'MVA'. Ensure the revised text is suitable for inclusion in a psychological report. Input: `
let chatPrompt = `${instruction} "${selection}"`
// Set up Grok AI with credentials and xAI API endpoint
let host = "https://api.x.ai/v1" // xAI's API base URL
let ai = OpenAI.create(null, host) // Initialize with xAI host
ai.model = "grok-beta" // Using the Grok beta model
ai.credentialIdentifier = "Grok" // Matches your credential setup
// Send prompt to Grok AI
let answer = ai.quickChatResponse(chatPrompt)
// if we got no reply, cancel
if (!answer || answer.length == 0) {
return false
}
editor.setSelectedText(answer)
editor.setSelectedRange(st, answer.length)
return true
}
if (!f()) {
context.fail()
}
Looks right…only change I might make is the below:
// change this...
let ai = OpenAI.create(null, host) // Initialize with xAI host
// to this...
let ai = OpenAI.create("Grok", host) // Initialize with xAI host
That first parameter tells the credential system to use a different identifier, so an API key you enter would not conflict with API keys for OpenAI, if you also use OpenAI actions.
Tried it but let ai = OpenAI.create("Grok", host)
breaks the Action.
Error:
OpenAI: 400, {"code":"Client specified an invalid argument","error":"Incorrect API key provided: ***. You can obtain an API key from https://console.x.ai."}
undefined
Script step completed.
My bad, forgot the signature on that one…what I said was already handled by setting the credentialIdentifier
So no change needed?