retab 0.0.42__py3-none-any.whl → 0.0.43__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- retab/__init__.py +2 -1
- retab/client.py +16 -45
- retab/resources/consensus/client.py +1 -1
- retab/resources/consensus/responses.py +1 -1
- retab/resources/documents/client.py +94 -68
- retab/resources/documents/extractions.py +55 -46
- retab/resources/evaluations/client.py +32 -19
- retab/resources/evaluations/documents.py +12 -11
- retab/resources/evaluations/iterations.py +48 -30
- retab/resources/jsonlUtils.py +3 -4
- retab/resources/processors/automations/endpoints.py +49 -39
- retab/resources/processors/automations/links.py +52 -43
- retab/resources/processors/automations/mailboxes.py +74 -59
- retab/resources/processors/automations/outlook.py +104 -82
- retab/resources/processors/client.py +35 -30
- retab/resources/usage.py +2 -0
- retab/types/ai_models.py +1 -1
- retab/types/deprecated_evals.py +195 -0
- retab/types/evaluations/__init__.py +5 -2
- retab/types/evaluations/iterations.py +9 -43
- retab/types/evaluations/model.py +20 -22
- retab/types/extractions.py +1 -0
- retab/types/logs.py +5 -6
- retab/types/mime.py +1 -10
- retab/types/schemas/enhance.py +22 -5
- retab/types/schemas/evaluate.py +1 -1
- retab/types/schemas/object.py +26 -0
- retab/types/standards.py +2 -2
- retab/utils/__init__.py +3 -0
- retab/utils/ai_models.py +127 -12
- retab/utils/hashing.py +24 -0
- retab/utils/json_schema.py +1 -26
- retab/utils/mime.py +0 -17
- {retab-0.0.42.dist-info → retab-0.0.43.dist-info}/METADATA +3 -5
- {retab-0.0.42.dist-info → retab-0.0.43.dist-info}/RECORD +37 -51
- retab/_utils/__init__.py +0 -0
- retab/_utils/_model_cards/anthropic.yaml +0 -59
- retab/_utils/_model_cards/auto.yaml +0 -43
- retab/_utils/_model_cards/gemini.yaml +0 -117
- retab/_utils/_model_cards/openai.yaml +0 -301
- retab/_utils/_model_cards/xai.yaml +0 -28
- retab/_utils/ai_models.py +0 -138
- retab/_utils/benchmarking.py +0 -484
- retab/_utils/chat.py +0 -327
- retab/_utils/display.py +0 -440
- retab/_utils/json_schema.py +0 -2156
- retab/_utils/mime.py +0 -165
- retab/_utils/responses.py +0 -169
- retab/_utils/stream_context_managers.py +0 -52
- retab/_utils/usage/__init__.py +0 -0
- retab/_utils/usage/usage.py +0 -301
- {retab-0.0.42.dist-info → retab-0.0.43.dist-info}/WHEEL +0 -0
- {retab-0.0.42.dist-info → retab-0.0.43.dist-info}/top_level.txt +0 -0
retab/utils/ai_models.py
CHANGED
@@ -6,6 +6,7 @@ from ..types.ai_models import AIProvider, GeminiModel, OpenAIModel, xAI_Model, R
|
|
6
6
|
|
7
7
|
MODEL_CARDS_DIR = os.path.join(os.path.dirname(__file__), "_model_cards")
|
8
8
|
|
9
|
+
|
9
10
|
def merge_model_cards(base: dict, override: dict) -> dict:
|
10
11
|
result = base.copy()
|
11
12
|
for key, value in override.items():
|
@@ -17,6 +18,7 @@ def merge_model_cards(base: dict, override: dict) -> dict:
|
|
17
18
|
result[key] = value
|
18
19
|
return result
|
19
20
|
|
21
|
+
|
20
22
|
def load_model_cards(yaml_file: str) -> list[ModelCard]:
|
21
23
|
raw_cards = yaml.safe_load(open(yaml_file))
|
22
24
|
name_to_card = {c["model"]: c for c in raw_cards if "inherits" not in c}
|
@@ -31,14 +33,18 @@ def load_model_cards(yaml_file: str) -> list[ModelCard]:
|
|
31
33
|
final_cards.append(ModelCard(**card))
|
32
34
|
return final_cards
|
33
35
|
|
36
|
+
|
34
37
|
# Load all model cards
|
35
|
-
model_cards = sum(
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
38
|
+
model_cards = sum(
|
39
|
+
[
|
40
|
+
load_model_cards(os.path.join(MODEL_CARDS_DIR, "openai.yaml")),
|
41
|
+
load_model_cards(os.path.join(MODEL_CARDS_DIR, "anthropic.yaml")),
|
42
|
+
load_model_cards(os.path.join(MODEL_CARDS_DIR, "xai.yaml")),
|
43
|
+
load_model_cards(os.path.join(MODEL_CARDS_DIR, "gemini.yaml")),
|
44
|
+
load_model_cards(os.path.join(MODEL_CARDS_DIR, "auto.yaml")),
|
45
|
+
],
|
46
|
+
[],
|
47
|
+
)
|
42
48
|
model_cards_dict = {card.model: card for card in model_cards}
|
43
49
|
|
44
50
|
|
@@ -108,7 +114,7 @@ def get_provider_for_model(model_id: str) -> AIProvider:
|
|
108
114
|
|
109
115
|
|
110
116
|
def assert_valid_model_extraction(model: str) -> None:
|
111
|
-
try:
|
117
|
+
try:
|
112
118
|
get_provider_for_model(model)
|
113
119
|
except ValueError:
|
114
120
|
raise ValueError(
|
@@ -132,7 +138,116 @@ def assert_valid_model_schema_generation(model: str) -> None:
|
|
132
138
|
return
|
133
139
|
else:
|
134
140
|
raise ValueError(
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
141
|
+
f"Invalid model format: {model}. Must be either:\n"
|
142
|
+
f"1. A standard model: {get_args(OpenAIModel)}\n"
|
143
|
+
f"2. A fine-tuned model in format 'base_model:id' where base_model is one of the standard openai models"
|
144
|
+
) from None
|
145
|
+
|
146
|
+
|
147
|
+
def get_model_credits(model: str) -> float:
|
148
|
+
"""
|
149
|
+
Get the credit cost for a given model based on its capabilities and size.
|
150
|
+
|
151
|
+
Credit tiers:
|
152
|
+
- 0.1 credits: Micro/nano models (fastest, cheapest)
|
153
|
+
- 0.5 credits: Small/mini models (balanced performance)
|
154
|
+
- 2.0 credits: Large/advanced models (highest capability)
|
155
|
+
|
156
|
+
Args:
|
157
|
+
model: The model name to look up
|
158
|
+
|
159
|
+
Returns:
|
160
|
+
The credit cost for the model
|
161
|
+
|
162
|
+
Raises:
|
163
|
+
ValueError: If no model card is found for the specified model
|
164
|
+
"""
|
165
|
+
try:
|
166
|
+
model_card = get_model_card(model)
|
167
|
+
model_name = get_model_from_model_id(model)
|
168
|
+
except ValueError:
|
169
|
+
# Unknown model, return 0 credits (no billing)
|
170
|
+
return 0.0
|
171
|
+
|
172
|
+
# Define credit mapping based on model capabilities and naming patterns
|
173
|
+
model_credits = {
|
174
|
+
# 0.1 credit models - Micro/Nano tier (fastest, most efficient)
|
175
|
+
"auto-micro": 0.1,
|
176
|
+
"gemini-flash-lite": 0.1,
|
177
|
+
"gpt-4o-mini": 0.1,
|
178
|
+
"gpt-3.5-turbo": 0.1,
|
179
|
+
"gpt-4.1-nano": 0.1, # Future model
|
180
|
+
# 0.5 credit models - Small/Mini tier (balanced performance)
|
181
|
+
"auto-small": 0.5,
|
182
|
+
"gemini-flash": 0.5,
|
183
|
+
"gpt-4o": 0.5,
|
184
|
+
"gpt-4-turbo": 0.5,
|
185
|
+
"gpt-4.1-mini": 0.5, # Future model
|
186
|
+
"claude-3-haiku": 0.5,
|
187
|
+
"claude-3.5-haiku": 0.5,
|
188
|
+
# 2.0 credit models - Large/Advanced tier (highest capability)
|
189
|
+
"auto-large": 2.0,
|
190
|
+
"gemini-pro": 2.0,
|
191
|
+
"gpt-4": 2.0,
|
192
|
+
"gpt-4.1": 2.0, # Future model
|
193
|
+
"o1-mini": 2.0,
|
194
|
+
"o1-preview": 2.0,
|
195
|
+
"o3": 5.0, # Future model
|
196
|
+
"claude-3-sonnet": 2.0,
|
197
|
+
"claude-3-opus": 2.0,
|
198
|
+
"claude-3.5-sonnet": 2.0,
|
199
|
+
"grok-beta": 2.0,
|
200
|
+
"grok-2": 2.0,
|
201
|
+
# Special reasoning models - Higher tier
|
202
|
+
"o1": 3.0,
|
203
|
+
"o3-max": 3.0, # Future model, highest tier
|
204
|
+
}
|
205
|
+
|
206
|
+
# Return the credits for the specific model
|
207
|
+
if model_name in model_credits:
|
208
|
+
return model_credits[model_name]
|
209
|
+
|
210
|
+
# Fallback logic based on model patterns and capabilities
|
211
|
+
model_lower = model_name.lower()
|
212
|
+
|
213
|
+
# Auto-model fallback logic
|
214
|
+
if model_lower.startswith("auto-"):
|
215
|
+
if "micro" in model_lower or "nano" in model_lower:
|
216
|
+
return 0.1
|
217
|
+
elif "small" in model_lower or "mini" in model_lower:
|
218
|
+
return 0.5
|
219
|
+
elif "large" in model_lower or "pro" in model_lower:
|
220
|
+
return 2.0
|
221
|
+
|
222
|
+
# Gemini model fallback logic
|
223
|
+
if "gemini" in model_lower:
|
224
|
+
if "lite" in model_lower or "nano" in model_lower:
|
225
|
+
return 0.1
|
226
|
+
elif "flash" in model_lower:
|
227
|
+
return 0.5
|
228
|
+
elif "pro" in model_lower or "ultra" in model_lower:
|
229
|
+
return 2.0
|
230
|
+
|
231
|
+
# GPT model fallback logic
|
232
|
+
if "gpt" in model_lower:
|
233
|
+
if "mini" in model_lower or "3.5" in model_lower:
|
234
|
+
return 0.1
|
235
|
+
elif "4o" in model_lower and "mini" not in model_lower:
|
236
|
+
return 0.5
|
237
|
+
elif "4" in model_lower or "o1" in model_lower:
|
238
|
+
return 2.0
|
239
|
+
|
240
|
+
# Claude model fallback logic
|
241
|
+
if "claude" in model_lower:
|
242
|
+
if "haiku" in model_lower:
|
243
|
+
return 0.5
|
244
|
+
elif "sonnet" in model_lower or "opus" in model_lower:
|
245
|
+
return 2.0
|
246
|
+
|
247
|
+
# Default for unknown models - use model card info if available
|
248
|
+
try:
|
249
|
+
# Try to determine based on model card properties
|
250
|
+
# This could be enhanced based on the actual ModelCard structure
|
251
|
+
return 1.0 # Default middle tier
|
252
|
+
except:
|
253
|
+
return 0.0 # No billing for completely unknown models
|
retab/utils/hashing.py
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
import base64
|
2
|
+
import hashlib
|
3
|
+
import json
|
4
|
+
|
5
|
+
from fastapi.encoders import jsonable_encoder
|
6
|
+
|
7
|
+
# ************* Generalistic utils *************
|
8
|
+
|
9
|
+
|
10
|
+
def generate_blake2b_hash_from_bytes(bytes_: bytes) -> str:
|
11
|
+
return hashlib.blake2b(bytes_, digest_size=8).hexdigest()
|
12
|
+
|
13
|
+
|
14
|
+
def generate_blake2b_hash_from_base64(base64_string: str) -> str:
|
15
|
+
return generate_blake2b_hash_from_bytes(base64.b64decode(base64_string))
|
16
|
+
|
17
|
+
|
18
|
+
def generate_blake2b_hash_from_string(input_string: str) -> str:
|
19
|
+
return generate_blake2b_hash_from_bytes(input_string.encode("utf-8"))
|
20
|
+
|
21
|
+
|
22
|
+
def generate_blake2b_hash_from_dict(input_dict: dict) -> str:
|
23
|
+
jsonable_dict = jsonable_encoder(input_dict)
|
24
|
+
return generate_blake2b_hash_from_string(json.dumps(jsonable_dict, sort_keys=True).strip())
|
retab/utils/json_schema.py
CHANGED
@@ -15,7 +15,7 @@ from pydantic import BaseModel, BeforeValidator, Field, create_model
|
|
15
15
|
from pydantic.config import ConfigDict
|
16
16
|
|
17
17
|
from ..types.schemas.layout import Column, FieldItem, Layout, RefObject, Row, RowList
|
18
|
-
from .
|
18
|
+
from .hashing import generate_blake2b_hash_from_string
|
19
19
|
|
20
20
|
# **** Validation Functions ****
|
21
21
|
|
@@ -2091,31 +2091,6 @@ def sanitize(instance: Any, schema: dict[str, Any]) -> Any:
|
|
2091
2091
|
return __sanitize_instance(instance, expanded_schema)
|
2092
2092
|
|
2093
2093
|
|
2094
|
-
def compute_schema_data_id(json_schema: dict[str, Any]) -> str:
|
2095
|
-
"""Returns the schema_data_id for a given JSON schema.
|
2096
|
-
|
2097
|
-
The schema_data_id is a hash of the schema data, ignoring all prompt/description/default fields
|
2098
|
-
and other non-structural metadata.
|
2099
|
-
|
2100
|
-
Args:
|
2101
|
-
json_schema: The JSON schema to compute the ID for
|
2102
|
-
|
2103
|
-
Returns:
|
2104
|
-
str: A hash string representing the schema data version with "sch_data_id_" prefix
|
2105
|
-
"""
|
2106
|
-
|
2107
|
-
return "sch_data_id_" + generate_blake2b_hash_from_string(
|
2108
|
-
json.dumps(
|
2109
|
-
clean_schema(
|
2110
|
-
copy.deepcopy(json_schema),
|
2111
|
-
remove_custom_fields=True,
|
2112
|
-
fields_to_remove=["description", "default", "title", "required", "examples", "deprecated", "readOnly", "writeOnly"],
|
2113
|
-
),
|
2114
|
-
sort_keys=True,
|
2115
|
-
).strip()
|
2116
|
-
)
|
2117
|
-
|
2118
|
-
|
2119
2094
|
def validate_json_against_schema(
|
2120
2095
|
data: Any,
|
2121
2096
|
schema: dict[str, Any],
|
retab/utils/mime.py
CHANGED
@@ -16,23 +16,6 @@ from ..types.modalities import SUPPORTED_TYPES
|
|
16
16
|
|
17
17
|
T = TypeVar("T")
|
18
18
|
|
19
|
-
|
20
|
-
def generate_blake2b_hash_from_bytes(bytes_: bytes) -> str:
|
21
|
-
return hashlib.blake2b(bytes_, digest_size=8).hexdigest()
|
22
|
-
|
23
|
-
|
24
|
-
def generate_blake2b_hash_from_base64(base64_string: str) -> str:
|
25
|
-
return generate_blake2b_hash_from_bytes(base64.b64decode(base64_string))
|
26
|
-
|
27
|
-
|
28
|
-
def generate_blake2b_hash_from_string(input_string: str) -> str:
|
29
|
-
return generate_blake2b_hash_from_bytes(input_string.encode("utf-8"))
|
30
|
-
|
31
|
-
|
32
|
-
def generate_blake2b_hash_from_dict(input_dict: dict) -> str:
|
33
|
-
return generate_blake2b_hash_from_string(json.dumps(input_dict, sort_keys=True).strip())
|
34
|
-
|
35
|
-
|
36
19
|
def convert_pil_image_to_mime_data(image: PIL.Image.Image) -> MIMEData:
|
37
20
|
"""Convert a PIL Image object to a MIMEData object.
|
38
21
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: retab
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.43
|
4
4
|
Summary: Retab official python library
|
5
5
|
Home-page: https://github.com/Retab-dev/retab
|
6
6
|
Author: Retab
|
@@ -61,7 +61,7 @@ Made with love by the team at [Retab](https://retab.com) 🤍.
|
|
61
61
|
|
62
62
|
### What is Retab?
|
63
63
|
|
64
|
-
Retab solves all the major challenges in document processing with
|
64
|
+
Retab solves all the major challenges in document processing with Large Language Models:
|
65
65
|
|
66
66
|
1. **Universal Document Preprocessing**: Convert any file type (PDFs, Excel, emails, etc.) into LLM-ready format without writing custom parsers
|
67
67
|
2. **Structured, Schema-driven Extraction**: Get consistent, reliable outputs using schema-based prompt engineering
|
@@ -90,7 +90,7 @@ Many people haven't yet realized how powerful LLMs have become at document proce
|
|
90
90
|
|
91
91
|
## Code examples
|
92
92
|
|
93
|
-
|
93
|
+
You can check our Github repository to see code examples: [python examples](https://github.com/Retab-dev/retab/tree/main/examples) and [jupyter notebooks](https://github.com/Retab-dev/retab-nodejs/tree/main/notebooks).
|
94
94
|
|
95
95
|
## Community
|
96
96
|
|
@@ -112,8 +112,6 @@ We share our roadmap publicly on [Github](https://github.com/Retab-dev/retab)
|
|
112
112
|
Among the features we're working on:
|
113
113
|
|
114
114
|
* [ ] Node.js SDK
|
115
|
-
* [ ] Low-level speed optimizations for Evals Frontend
|
116
115
|
* [ ] Schema optimization autopilot
|
117
116
|
* [ ] Sources API
|
118
|
-
* [ ] Parse API for RAG
|
119
117
|
|
@@ -1,77 +1,62 @@
|
|
1
|
-
retab/__init__.py,sha256=
|
1
|
+
retab/__init__.py,sha256=IfXoXvlvx4t1q5Ge6_pCOQnGOymVPxT7Dm1vQJ0OqoA,153
|
2
2
|
retab/_resource.py,sha256=JfAU4UTa05ugWfbrpO7fsVr_pFewht99NkoIfK6kBQM,577
|
3
|
-
retab/client.py,sha256=
|
3
|
+
retab/client.py,sha256=iO7J5n4k767IuIvOSkWFD-QARUFwpVgLef3rIttGZmA,27633
|
4
4
|
retab/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
|
-
retab/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
-
retab/_utils/ai_models.py,sha256=u0SDwSd3SNhJaFm6bPepiGIh4BbocGYDKk4qu3kVIxc,4821
|
7
|
-
retab/_utils/benchmarking.py,sha256=ZSuVcRkYr4gD90yezAv6TuKaFdj2ulc5d5x3lXLbQss,17849
|
8
|
-
retab/_utils/chat.py,sha256=ZHt6oEX2lZl8O0tIj-rHnqgmDbHxMYEWPkx0fArvojo,14352
|
9
|
-
retab/_utils/display.py,sha256=ZFPbiBnwEWGR-suS8e9Xilz9OqyYRDwsKYWfbFSJPJM,18868
|
10
|
-
retab/_utils/json_schema.py,sha256=vbIg4NqREBq_eNbYdBTGw5ykhUmKkSiVRAahAOrWEZg,82237
|
11
|
-
retab/_utils/mime.py,sha256=S6pH_CmDc7fnb14PIoK3XALwb_Quha34a112joyUNmY,5723
|
12
|
-
retab/_utils/responses.py,sha256=MqY6G9OCLMJhCZcT5uhky5xv_IRqI43aXRjvBU-L58E,7023
|
13
|
-
retab/_utils/stream_context_managers.py,sha256=gI1gVQSj3nWz6Mvjz7Ix5AiY0g6vSL-c2tPfuP04izo,2314
|
14
|
-
retab/_utils/_model_cards/anthropic.yaml,sha256=faGKfsNNvi3Wgu2sFseV5KVOseJClHBPPdBVv6nWyXo,1413
|
15
|
-
retab/_utils/_model_cards/auto.yaml,sha256=3nMlz9K2l5dNSTk-7zi2Id5oohM2L3E2_di2J6UpfdM,1048
|
16
|
-
retab/_utils/_model_cards/gemini.yaml,sha256=irV9c0WumgEOIYbAkR2jsisfK_4dY1Tzja2D1j1euF0,2870
|
17
|
-
retab/_utils/_model_cards/openai.yaml,sha256=PcmjqAioomqWOw25H4BluVfJ1WO_zapg_nPxORUR7JM,7639
|
18
|
-
retab/_utils/_model_cards/xai.yaml,sha256=OdVV33_WODc4UBZhDezcUq_5mHQK5zeOT49EjJUJ764,612
|
19
|
-
retab/_utils/usage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
|
-
retab/_utils/usage/usage.py,sha256=g2_Co3gaB1Akgbszd-I7ddXMM-EyI7Gz9SI5SdtlBII,12949
|
21
5
|
retab/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
6
|
retab/resources/evals.py,sha256=vOMyCJ0dVy6YZUv4NtkujZBZCByvr0PmSpV6UGnorHw,29927
|
23
7
|
retab/resources/files.py,sha256=-_GejfQjKEk10HHb5npmLOA9cUnVHic2ZQntE8tw4TQ,954
|
24
8
|
retab/resources/finetuning.py,sha256=Rx8XcqB00UIjEDZcCGp5fM2yz5TW1j36aBicrTa0uAY,2587
|
25
|
-
retab/resources/jsonlUtils.py,sha256=
|
9
|
+
retab/resources/jsonlUtils.py,sha256=FThZ6QRqtOhcHouSn2xUXn9C3kBRnb0ggBmkunidF6g,45075
|
26
10
|
retab/resources/models.py,sha256=4WidFBnTGZEA65DSn2pLP2SRnCVXkMTw7o_m8xVCFC4,2469
|
27
11
|
retab/resources/openai_example.py,sha256=yz34KvfCvHTZ-AJ9GV-N7ljTTSWBmQEQNMHY2FUbEi4,522
|
28
12
|
retab/resources/prompt_optimization.py,sha256=MrzRehmFQK4Ltyr1jhLhx3yO22UxtDpmg9B3CDjirFc,3488
|
29
13
|
retab/resources/schemas.py,sha256=zoxhpCO0jIUx0f7VvS6QAbGlHmxtyBVvmyYoi5aFRQg,16054
|
30
|
-
retab/resources/usage.py,sha256=
|
14
|
+
retab/resources/usage.py,sha256=iyEP16FVFmESnANHTEPzbbQchsMwnoYa9zzlJSQR7-o,13759
|
31
15
|
retab/resources/consensus/__init__.py,sha256=0b3MSOFiYPwkNTrs_dBPRhwSl3kuk8BtG5QXofIUb9M,89
|
32
|
-
retab/resources/consensus/client.py,sha256=
|
16
|
+
retab/resources/consensus/client.py,sha256=gRiYUtSeNluCFZ7YfIwwWzg1M4rPpd_MJ0wJIzvzlPY,3736
|
33
17
|
retab/resources/consensus/completions.py,sha256=6vTnqADY6GueV28smYRDQ2yooj94G2WHMlQLyKOXqtw,8372
|
34
18
|
retab/resources/consensus/completions_stream.py,sha256=DlU9od01F1Fmh9WjTLhq4KsntfqXy5jGGwrYauS43Ec,10893
|
35
|
-
retab/resources/consensus/responses.py,sha256=
|
19
|
+
retab/resources/consensus/responses.py,sha256=hf1_gXBG8iwrBGyuXx16qCh6ULDXn9a0Uty1C-WiG7s,9966
|
36
20
|
retab/resources/consensus/responses_stream.py,sha256=OopJ9aoO7HctfhLnXzJx8-dkk-4jK_juOw6jUAkzwVM,11671
|
37
21
|
retab/resources/documents/__init__.py,sha256=OjXmngFN0RKqO4SI-mJBNzr6Ex6rMxfq0DxaqzP0RQs,89
|
38
|
-
retab/resources/documents/client.py,sha256=
|
39
|
-
retab/resources/documents/extractions.py,sha256=
|
22
|
+
retab/resources/documents/client.py,sha256=Okf4NvNjH4F5-jTJ7xIBv4LiMyM7TZkonTEDD5SuG6Q,25872
|
23
|
+
retab/resources/documents/extractions.py,sha256=KQJMgu_w5TfR3NI-pvNaGayjZc61sCNQleoXfmA00j0,25041
|
40
24
|
retab/resources/evaluations/__init__.py,sha256=3npbUDbxYn3ihnUKV7PRYNBYqL7MZ9AwhQHr7LaIESg,97
|
41
|
-
retab/resources/evaluations/client.py,sha256=
|
42
|
-
retab/resources/evaluations/documents.py,sha256=
|
43
|
-
retab/resources/evaluations/iterations.py,sha256=
|
25
|
+
retab/resources/evaluations/client.py,sha256=JmiyzfomM63jEsv_JoLNz6lySVmq_kla-nq3Z1JMdlg,11241
|
26
|
+
retab/resources/evaluations/documents.py,sha256=E6PF7PcIX3r1cTrxYwdaRp8XKp9hCc58wnH0i7Gjnm8,9807
|
27
|
+
retab/resources/evaluations/iterations.py,sha256=yJbiNGv9u2ze8t0Ple_o9QpL4W-9ftbxKOu4jsEjrTI,18742
|
44
28
|
retab/resources/processors/__init__.py,sha256=w1HrMdSi3xlrcEDFMQ9BA7rbUhOFWSTkTKkkR2PfFHQ,93
|
45
|
-
retab/resources/processors/client.py,sha256=
|
29
|
+
retab/resources/processors/client.py,sha256=81CG3CH63pI7FAxOLHCgAEJWh-1TgNmkvsaxpTkjcRM,20530
|
46
30
|
retab/resources/processors/automations/__init__.py,sha256=Iej-_yIxc8xAuhYmR0e2VI7j_EXVsNk1_L98OJSD82E,121
|
47
31
|
retab/resources/processors/automations/client.py,sha256=3w54F0JfC2GYDosLux8LVEjDd_RXqQ29-SyNXGa28U8,10500
|
48
|
-
retab/resources/processors/automations/endpoints.py,sha256=
|
49
|
-
retab/resources/processors/automations/links.py,sha256=
|
32
|
+
retab/resources/processors/automations/endpoints.py,sha256=zJ556BNighciPff1laA_bBPZNxT4mWmGi-kDMXa5_tw,10893
|
33
|
+
retab/resources/processors/automations/links.py,sha256=cSWLYE1g9VbR2kCckYNuE2xrMHYyGQ6Ei5YXmYjLkR0,11163
|
50
34
|
retab/resources/processors/automations/logs.py,sha256=seBjzv4Tm8fMJcApzZcyR5yXG5YLP0yW5BH5ql7JMcg,8827
|
51
|
-
retab/resources/processors/automations/mailboxes.py,sha256=
|
52
|
-
retab/resources/processors/automations/outlook.py,sha256=
|
35
|
+
retab/resources/processors/automations/mailboxes.py,sha256=OwThPbkjixPnmIIsOmKRqDp4upGhyrXtwMJ9JFwJUIw,15795
|
36
|
+
retab/resources/processors/automations/outlook.py,sha256=UrzyVRMfzkSwbMo4EsAxYkqOs3J8IBN2yrXrv40lo3w,14616
|
53
37
|
retab/resources/processors/automations/tests.py,sha256=nbO6qIkQnpr629ZkCchbfCJOm7KyjDOaLsxXxB3i0cg,6219
|
54
38
|
retab/resources/secrets/__init__.py,sha256=SwofMyk96k0YSyj1d_GRxhpVx4wb4TA97TISsTjB0Kc,105
|
55
39
|
retab/resources/secrets/client.py,sha256=nXt1cgvkWqhA99WTnC1PWbWJq-EbwvoDuCQOa0GJOOU,599
|
56
40
|
retab/resources/secrets/external_api_keys.py,sha256=3TuJxjk65EPUT2XC3wBcYWaVwqzc6QGv9BoHufzxTLU,3759
|
57
41
|
retab/resources/secrets/webhook.py,sha256=2mFDNblQYBGOwgqOG5gfRJkusQX7Hjy28XZ7O7ffkl8,1805
|
58
42
|
retab/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
59
|
-
retab/types/ai_models.py,sha256=
|
43
|
+
retab/types/ai_models.py,sha256=tnwYd7fgacsz7TAFoheHMCCyS7DRDfLVc8B0l-EV3_I,4945
|
60
44
|
retab/types/browser_canvas.py,sha256=U3yLqJcSwfturcIsNFSblRtFtnG3p-UL1YYoM9KZfdE,70
|
61
45
|
retab/types/chat.py,sha256=l32vhLtNcdmHFjG4iVC617j38x6a2oH7CNPwlvqdF8g,424
|
62
46
|
retab/types/completions.py,sha256=ZQU29bm-FhdOzky4_Dp2N--fedR82C3QfCRZCJCQ-P8,5381
|
63
47
|
retab/types/consensus.py,sha256=EsFCsyZK8NhkQ1BizFpnGN54D24hRFKc0xwt9VpH11c,1161
|
48
|
+
retab/types/deprecated_evals.py,sha256=YHxtQxzQ8RgQyzN1CEdAfOP2Nwc07b-XVPydPveTxbg,9306
|
64
49
|
retab/types/evals.py,sha256=JNdWu4hplfSEuSzu9l27ZVr2RO2opUKEruIpKXZosmU,9953
|
65
50
|
retab/types/events.py,sha256=NrisdzJAaJ_kkfgdsqoiDB-Upm0LnbIGZikU_e9XXWw,2195
|
66
|
-
retab/types/extractions.py,sha256=
|
51
|
+
retab/types/extractions.py,sha256=_slYXQrWPi93iMdJIOIm-WzYwWPG2Fiyd3Xx0zfekl0,6144
|
67
52
|
retab/types/inference_settings.py,sha256=F_mBPFVY1yAwsHD11Z2ljMf3zkvviOey_JBnu8yEF84,572
|
68
|
-
retab/types/logs.py,sha256=
|
53
|
+
retab/types/logs.py,sha256=mVC11hi2Lv0yh7zeoTMxqFNLaGU0pyziMmT7I8NDuN8,9098
|
69
54
|
retab/types/metrics.py,sha256=0KEWUWW13s_tWjh7oUs33ip9TPwI7LZUNGE7k5qNoOo,1947
|
70
|
-
retab/types/mime.py,sha256=
|
55
|
+
retab/types/mime.py,sha256=rOu8iER0pRAgT8PTmKIN6ETnUPGfFCZFbQzJUt9bka0,10815
|
71
56
|
retab/types/modalities.py,sha256=_2iGC_EEZT0Y-7PV_nHar5vqeEdsK7oy7ZJPV681nkg,1581
|
72
57
|
retab/types/pagination.py,sha256=-XrKILKX_5isTHTfShLiK3Kwp21Y6Wqy0Jci8lIFQig,109
|
73
58
|
retab/types/predictions.py,sha256=r7XM4rIMkUU10VsUkQ1wYdSkIApSGCXWkWxz7sMdBOk,1292
|
74
|
-
retab/types/standards.py,sha256=
|
59
|
+
retab/types/standards.py,sha256=7aGtuvzzkKidvqY8JB2Cjfn43V80FeKwrTtp162kjKc,1477
|
75
60
|
retab/types/automations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
76
61
|
retab/types/automations/cron.py,sha256=jDx0VzciboQw2_whvBXzgX5ZS0z2DksTgmyhXCSSGMk,3174
|
77
62
|
retab/types/automations/endpoints.py,sha256=IbylkBUBllcrtr9tifug0ptVq2vFKixuQ6e2JfW5Xfw,666
|
@@ -87,10 +72,10 @@ retab/types/documents/correct_orientation.py,sha256=e-ivsslI6L6Gl0YkcslXw_DH620x
|
|
87
72
|
retab/types/documents/create_messages.py,sha256=S2nJ4GHZ3hKTZ4kNs5XrCZeaokOsy9LqRC-FVHkFvSY,10285
|
88
73
|
retab/types/documents/extractions.py,sha256=z1XlQLeCGcUAipVB8WGbbUjaBor1bN9BxQzeBaDMj3E,19096
|
89
74
|
retab/types/documents/parse.py,sha256=-gCzloJhZraR_Pi9Je0SL8aP52n0GfO9qH838usPA3w,1418
|
90
|
-
retab/types/evaluations/__init__.py,sha256=
|
75
|
+
retab/types/evaluations/__init__.py,sha256=Jr-y_b7hE20LXMJoq4gkA3VF6bCUVGgAIbOWmMaXc7Q,1012
|
91
76
|
retab/types/evaluations/documents.py,sha256=oy0nqTrv0Pe__5ligeNWn5MbqVDAFRSrXYbCVoLxyXw,1268
|
92
|
-
retab/types/evaluations/iterations.py,sha256=
|
93
|
-
retab/types/evaluations/model.py,sha256=
|
77
|
+
retab/types/evaluations/iterations.py,sha256=YfiqaTvCxmPIJORHzCgtafshUBRZN9LAo1y2cOPSBco,3306
|
78
|
+
retab/types/evaluations/model.py,sha256=I9C8_LxkjrpzYBxcNbhAFUiq9cXAjoSlZDunK23305o,3159
|
94
79
|
retab/types/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
95
80
|
retab/types/jobs/base.py,sha256=R4UXcvgDmkgm4FB0ke5kQrSDWC95TweBLlc08ptfqt8,1695
|
96
81
|
retab/types/jobs/batch_annotation.py,sha256=Rftuu4Q6YzB4c39kWsqPGJ1QbPJrJWjWhupaKGO9kGE,281
|
@@ -99,21 +84,22 @@ retab/types/jobs/finetune.py,sha256=6O9NUy-ap_aqZ73tYx-NRRdFgKOIvk8WcItGhEUvrSQ,
|
|
99
84
|
retab/types/jobs/prompt_optimization.py,sha256=P7JI0zKFExCN4ws8kpFrCHBFbrJ4m4-zGJnNVXWa-ic,1306
|
100
85
|
retab/types/jobs/webcrawl.py,sha256=C3_7mW2mmOXs6ypktDIHdjMnify90pFo70wmhrs_TP8,183
|
101
86
|
retab/types/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
102
|
-
retab/types/schemas/enhance.py,sha256=
|
103
|
-
retab/types/schemas/evaluate.py,sha256=
|
87
|
+
retab/types/schemas/enhance.py,sha256=2FR3APE1yh6_GLoQ8EDFAS1y3oM6B4D4pexP1ohazug,2738
|
88
|
+
retab/types/schemas/evaluate.py,sha256=vCXVfC4H44r0lgP1IbxtvlxhoPTZV2l7wWlyERetvBc,2208
|
104
89
|
retab/types/schemas/generate.py,sha256=pb6e6yJ2KPswmNHNkFcRhata7B698yBLnzlFVspJ9mE,1194
|
105
90
|
retab/types/schemas/layout.py,sha256=JLPwQGIWfPBoe1Y5r-MhiNDJigzZ-yKZnVGgox0uqMk,1487
|
106
|
-
retab/types/schemas/object.py,sha256=
|
91
|
+
retab/types/schemas/object.py,sha256=3GG9dpP0qG2E9BTWuSmMjELQtcf4cpM26Uy5nim2QV0,26222
|
107
92
|
retab/types/schemas/templates.py,sha256=Of4gYULkxULhMOv1X1zXe9pd7o3b21vDUF4BYSouAsc,3465
|
108
93
|
retab/types/secrets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
109
94
|
retab/types/secrets/external_api_keys.py,sha256=-yaaOfNLxKpll3oD-0htQlW8S03lyWs9Mmk9HOdyQ3g,437
|
110
|
-
retab/utils/__init__.py,sha256=
|
111
|
-
retab/utils/ai_models.py,sha256=
|
95
|
+
retab/utils/__init__.py,sha256=cta2g2pCC9nDHbM4-s5PwLNqwF31T8oP5wy5UvGrJc8,151
|
96
|
+
retab/utils/ai_models.py,sha256=wooYSZAxLiL2i9lSku2266tyown0rhPnjOzoyBgkUH4,8421
|
112
97
|
retab/utils/benchmarking.py,sha256=ZSuVcRkYr4gD90yezAv6TuKaFdj2ulc5d5x3lXLbQss,17849
|
113
98
|
retab/utils/chat.py,sha256=ZHt6oEX2lZl8O0tIj-rHnqgmDbHxMYEWPkx0fArvojo,14352
|
114
99
|
retab/utils/display.py,sha256=ZFPbiBnwEWGR-suS8e9Xilz9OqyYRDwsKYWfbFSJPJM,18868
|
115
|
-
retab/utils/
|
116
|
-
retab/utils/
|
100
|
+
retab/utils/hashing.py,sha256=_BMVUvftOcJav68QL0rLkH2dbhW9RRJPzeGC2akR0fc,757
|
101
|
+
retab/utils/json_schema.py,sha256=7MBPVMYxc0ExtIRAZSEtMwe3PuVMrWs6CBjSse5X9js,81395
|
102
|
+
retab/utils/mime.py,sha256=KQIMncxOkNA9WbG5R9rr5VWmjm_ubGOPG0oPJvJp6_g,5155
|
117
103
|
retab/utils/responses.py,sha256=MqY6G9OCLMJhCZcT5uhky5xv_IRqI43aXRjvBU-L58E,7023
|
118
104
|
retab/utils/stream_context_managers.py,sha256=gI1gVQSj3nWz6Mvjz7Ix5AiY0g6vSL-c2tPfuP04izo,2314
|
119
105
|
retab/utils/_model_cards/anthropic.yaml,sha256=faGKfsNNvi3Wgu2sFseV5KVOseJClHBPPdBVv6nWyXo,1413
|
@@ -123,7 +109,7 @@ retab/utils/_model_cards/openai.yaml,sha256=PcmjqAioomqWOw25H4BluVfJ1WO_zapg_nPx
|
|
123
109
|
retab/utils/_model_cards/xai.yaml,sha256=OdVV33_WODc4UBZhDezcUq_5mHQK5zeOT49EjJUJ764,612
|
124
110
|
retab/utils/usage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
125
111
|
retab/utils/usage/usage.py,sha256=PoQAMSWqEXYIRdp-JW9HjecFVitD_oMbxDMtDJdqWnQ,12948
|
126
|
-
retab-0.0.
|
127
|
-
retab-0.0.
|
128
|
-
retab-0.0.
|
129
|
-
retab-0.0.
|
112
|
+
retab-0.0.43.dist-info/METADATA,sha256=Z3U8j90ruwggK7JMSjKGJoH8TnDlh9hrKgC4DkxBk_I,4484
|
113
|
+
retab-0.0.43.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
|
114
|
+
retab-0.0.43.dist-info/top_level.txt,sha256=waQR0EGdhLIQtztoE3AXg7ik5ONQ9q_bsKVpyFuJdq0,6
|
115
|
+
retab-0.0.43.dist-info/RECORD,,
|
retab/_utils/__init__.py
DELETED
File without changes
|
@@ -1,59 +0,0 @@
|
|
1
|
-
- model: "claude-3-5-sonnet-latest"
|
2
|
-
pricing:
|
3
|
-
text:
|
4
|
-
prompt: 3.00
|
5
|
-
cached_discount: 0.5
|
6
|
-
completion: 15.00
|
7
|
-
audio: null
|
8
|
-
capabilities:
|
9
|
-
modalities: ["text", "image"]
|
10
|
-
endpoints: ["chat_completions"]
|
11
|
-
features: ["streaming", "function_calling"]
|
12
|
-
permissions:
|
13
|
-
show_in_free_picker: true
|
14
|
-
show_in_paid_picker: true
|
15
|
-
|
16
|
-
- model: "claude-3-5-sonnet-20241022"
|
17
|
-
inherits: "claude-3-5-sonnet-latest"
|
18
|
-
permissions:
|
19
|
-
show_in_free_picker: false
|
20
|
-
show_in_paid_picker: false
|
21
|
-
|
22
|
-
- model: "claude-3-opus-20240229"
|
23
|
-
pricing:
|
24
|
-
text:
|
25
|
-
prompt: 15.00
|
26
|
-
cached_discount: 0.5
|
27
|
-
completion: 75.00
|
28
|
-
audio: null
|
29
|
-
capabilities:
|
30
|
-
modalities: ["text", "image"]
|
31
|
-
endpoints: ["chat_completions"]
|
32
|
-
features: ["streaming", "function_calling"]
|
33
|
-
permissions:
|
34
|
-
show_in_free_picker: true
|
35
|
-
show_in_paid_picker: true
|
36
|
-
|
37
|
-
- model: "claude-3-sonnet-20240229"
|
38
|
-
pricing:
|
39
|
-
text:
|
40
|
-
prompt: 3.00
|
41
|
-
cached_discount: 0.5
|
42
|
-
completion: 15.00
|
43
|
-
audio: null
|
44
|
-
capabilities:
|
45
|
-
modalities: ["text", "image"]
|
46
|
-
endpoints: ["chat_completions"]
|
47
|
-
features: ["streaming", "function_calling"]
|
48
|
-
|
49
|
-
- model: "claude-3-haiku-20240307"
|
50
|
-
pricing:
|
51
|
-
text:
|
52
|
-
prompt: 0.25
|
53
|
-
cached_discount: 0.5
|
54
|
-
completion: 1.25
|
55
|
-
audio: null
|
56
|
-
capabilities:
|
57
|
-
modalities: ["text", "image"]
|
58
|
-
endpoints: ["chat_completions"]
|
59
|
-
features: ["streaming", "function_calling"]
|
@@ -1,43 +0,0 @@
|
|
1
|
-
- model: "auto-large"
|
2
|
-
pricing:
|
3
|
-
text:
|
4
|
-
prompt: 2.00
|
5
|
-
cached_discount: 0.25
|
6
|
-
completion: 8.00
|
7
|
-
audio: null
|
8
|
-
ft_price_hike: 1.5
|
9
|
-
capabilities:
|
10
|
-
modalities: ["text", "image"]
|
11
|
-
endpoints: ["chat_completions"]
|
12
|
-
features: ["streaming", "function_calling", "structured_outputs"]
|
13
|
-
temperature_support: true
|
14
|
-
|
15
|
-
- model: "auto-small"
|
16
|
-
pricing:
|
17
|
-
text:
|
18
|
-
prompt: 0.4
|
19
|
-
cached_discount: 0.25
|
20
|
-
completion: 1.6
|
21
|
-
audio:
|
22
|
-
prompt: 0.7
|
23
|
-
cached_discount: 0.175
|
24
|
-
completion: 1000
|
25
|
-
capabilities:
|
26
|
-
modalities: ["text", "image"]
|
27
|
-
endpoints: ["chat_completions"]
|
28
|
-
features: ["streaming", "function_calling", "structured_outputs"]
|
29
|
-
temperature_support: true
|
30
|
-
|
31
|
-
- model: "auto-micro"
|
32
|
-
pricing:
|
33
|
-
text:
|
34
|
-
prompt: 0.1
|
35
|
-
cached_discount: 0.25
|
36
|
-
completion: 0.4
|
37
|
-
audio: null
|
38
|
-
ft_price_hike: 1.5
|
39
|
-
capabilities:
|
40
|
-
modalities: ["text", "image"]
|
41
|
-
endpoints: ["chat_completions"]
|
42
|
-
features: ["streaming", "function_calling", "structured_outputs"]
|
43
|
-
temperature_support: true
|