OpenAI
Dispatch provides a built-in integration with openai to retry failed OpenAI requests and exceptions. It’s enabled by default and it takes no extra code to set it up.
import dispatchfrom openai import Client
openai = Client(api_key="<your API key>")
@dispatch.functiondef ask_chatgpt(question): chat_completion = client.chat.completions.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "You are a helpful assistant"}, {"role": "user", "content": question}, ], )
return chat_completion.choices[0].message.content
def main(): ask_chatgpt.dispatch("What is the most loved programming language?")
dispatch.run(main)
Exception handling
APIStatusError
Depending on the status_code
attribute, a different Dispatch behavior is applied.
HTTP status code | Description | Dispatch status |
---|---|---|
1xx | Informational | Status.PERMANENT_ERROR |
2xx | Successful | Status.OK |
3xx | Redirection | Status.PERMANENT_ERROR |
3xx | Redirection | Status.PERMANENT_ERROR |
4xx | Client error | Status.PERMANENT_ERROR |
400 | Bad request | Status.INVALID_ARGUMENT |
401 | Unauthorized | Status.UNAUTHENTICATED |
403 | Forbidden | Status.PERMISSION_DENIED |
404 | Not found | Status.NOT_FOUND |
408 | Request timeout | Status.TIMEOUT |
429 | Too many requests | Status.THROTTLED |
5xx | Server error | Status.TEMPORARY_ERROR |
501 | Not implemented | Status.PERMANENT_ERROR |
APITimeoutError
Returns Status.TIMEOUT
.
OpenAIError
Returns Status.TEMPORARY_ERROR
, unless exception is APIStatusError
or APITimeoutError
, since OpenAIError
is a parent class of these. Learn more in openai documentation.