未提供项目描述
项目描述
AiFail
Python库,用于重试openai/gcp API调用
安装
pip install aifail
使用
要开始使用,只需将您的函数用 @retry_if
包装,指定重试的条件。
自定义逻辑
您可以用这个来处理任何需要重试的东西,例如google sheets -
def sheets_api_should_retry(e: Exception) -> bool:
return isinstance(e, HttpError) and (
e.resp.status in (408, 429) or e.resp.status > 500
)
@retry_if(sheets_api_should_retry)
def update_cell(spreadsheet_id: str, row: int, col: int, value: str):
get_spreadsheet_service().values().update(
spreadsheetId=spreadsheet_id,
range=f"{col_i2a(col)}{row}:{col_i2a(col)}{row}",
body={"values": [[value]]},
valueInputOption="RAW",
).execute()
高级使用
此库由GooeyAI在生产中使用,每天处理数千次API调用。为了节省成本和处理速率限制,您可以智能地指定快速回退(例如azure openai) -
可追踪的错误
AiFail附带内置的记录器,并输出完整的堆栈跟踪,将错误追溯到原始调用位置。
# python examples/azure_openai_fallback.py
2023-11-18 04:36:01.364 | WARNING | aifail.aifail:try_all:63 - [2/2] tyring next fn, prev_exc=NotFoundError("Error code: 404 - {'error': {'code': 'DeploymentNotFound', 'message': 'The API deployment for this resource does not exist. If you created the deployment within the last 5 minutes, please wait a moment and try again.'}}")
2023-11-18 04:36:01.778 | WARNING | aifail.aifail:wrapper:98 - [1/1] captured error, retry_delay=0.4117675457681431s, exc=NotFoundError("Error code: 404 - {'error': {'message': 'The model `gpt-4-x` does not exist', 'type': 'invalid_request_error', 'param': None, 'code': 'model_not_found'}}")
2023-11-18 04:36:02.483 | WARNING | aifail.aifail:try_all:63 - [2/2] tyring next fn, prev_exc=NotFoundError("Error code: 404 - {'error': {'code': 'DeploymentNotFound', 'message': 'The API deployment for this resource does not exist. If you created the deployment within the last 5 minutes, please wait a moment and try again.'}}")
2023-11-18 04:36:04.093 | WARNING | aifail.aifail:wrapper:98 - [2/1] captured error, retry_delay=0.9974197744911488s, exc=NotFoundError("Error code: 404 - {'error': {'message': 'The model `gpt-4-x` does not exist', 'type': 'invalid_request_error', 'param': None, 'code': 'model_not_found'}}")
Traceback (most recent call last):
File "/Users/dev/Projects/dara/aifail/aifail/aifail.py", line 65, in try_all
return fn()
File "/Users/dev/Projects/dara/aifail/examples/azure_openai_fallback.py", line 28, in <lambda>
lambda: azure_client.chat.completions.create(
...
openai.NotFoundError: Error code: 404 - {'error': {'code': 'DeploymentNotFound', 'message': 'The API deployment for this resource does not exist. If you created the deployment within the last 5 minutes, please wait a moment and try again.'}}
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/dev/Projects/dara/aifail/aifail/aifail.py", line 86, in wrapper
return fn(*args, **kwargs)
File "/Users/dev/Projects/dara/aifail/examples/azure_openai_fallback.py", line 26, in chad_gpt4
response = try_all(
File "/Users/dev/Projects/dara/aifail/aifail/aifail.py", line 69, in try_all
raise prev_exc
File "/Users/dev/Projects/dara/aifail/aifail/aifail.py", line 65, in try_all
return fn()
File "/Users/dev/Projects/dara/aifail/examples/azure_openai_fallback.py", line 34, in <lambda>
lambda: openai_client.chat.completions.create(
...
openai.NotFoundError: Error code: 404 - {'error': {'message': 'The model `gpt-4-x` does not exist', 'type': 'invalid_request_error', 'param': None, 'code': 'model_not_found'}}
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/dev/Projects/dara/aifail/aifail/aifail.py", line 65, in try_all
return fn()
File "/Users/dev/Projects/dara/aifail/examples/azure_openai_fallback.py", line 28, in <lambda>
lambda: azure_client.chat.completions.create(
...
openai.NotFoundError: Error code: 404 - {'error': {'code': 'DeploymentNotFound', 'message': 'The API deployment for this resource does not exist. If you created the deployment within the last 5 minutes, please wait a moment and try again.'}}
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/dev/Projects/dara/aifail/examples/azure_openai_fallback.py", line 43, in <module>
chad_gpt4(
File "/Users/dev/Projects/dara/aifail/aifail/aifail.py", line 102, in wrapper
raise prev_exc
File "/Users/dev/Projects/dara/aifail/aifail/aifail.py", line 86, in wrapper
return fn(*args, **kwargs)
File "/Users/dev/Projects/dara/aifail/examples/azure_openai_fallback.py", line 26, in chad_gpt4
response = try_all(
File "/Users/dev/Projects/dara/aifail/aifail/aifail.py", line 69, in try_all
raise prev_exc
File "/Users/dev/Projects/dara/aifail/aifail/aifail.py", line 65, in try_all
return fn()
File "/Users/dev/Projects/dara/aifail/examples/azure_openai_fallback.py", line 34, in <lambda>
lambda: openai_client.chat.completions.create(
...
openai.NotFoundError: Error code: 404 - {'error': {'message': 'The model `gpt-4-x` does not exist', 'type': 'invalid_request_error', 'param': None, 'code': 'model_not_found'}}
Process finished with exit code 1
Sentry也会捕获整个重试循环
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
aifail-0.3.0.tar.gz (4.7 kB 查看哈希)
构建分布
aifail-0.3.0-py3-none-any.whl (5.3 kB 查看哈希值)
关闭
aifail-0.3.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bae17258f2c8f221eb4ab847f0a17982d27f2af8c14ef2bbee32cee94fc10fb4 |
|
MD5 | de9708fc57e78a1b5ef46860e34eb70c |
|
BLAKE2b-256 | d423077dea2ad51ed1b4590d66b852ea88641e53f6cc13d178f616b5b4fcdc8a |
关闭
aifail-0.3.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d9726cc2121c977c283cab3411a46dbc714b01b23d050f6ba0cbb841ce12b8f8 |
|
MD5 | 6fad99ac2936c0cd4cffaf98d7e124dd |
|
BLAKE2b-256 | 17b0e74d7e9d47075783b67e6a71a12f646df2f01e41076e679515ed7a9d1805 |