palimpzest 0.8.1__py3-none-any.whl → 0.8.3__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.
- palimpzest/constants.py +38 -62
- palimpzest/core/data/dataset.py +1 -1
- palimpzest/core/data/iter_dataset.py +5 -5
- palimpzest/core/elements/groupbysig.py +1 -1
- palimpzest/core/elements/records.py +91 -109
- palimpzest/core/lib/schemas.py +23 -0
- palimpzest/core/models.py +3 -3
- palimpzest/prompts/__init__.py +2 -6
- palimpzest/prompts/convert_prompts.py +10 -66
- palimpzest/prompts/critique_and_refine_prompts.py +66 -0
- palimpzest/prompts/filter_prompts.py +8 -46
- palimpzest/prompts/join_prompts.py +12 -75
- palimpzest/prompts/{moa_aggregator_convert_prompts.py → moa_aggregator_prompts.py} +51 -2
- palimpzest/prompts/moa_proposer_prompts.py +87 -0
- palimpzest/prompts/prompt_factory.py +351 -479
- palimpzest/prompts/split_merge_prompts.py +51 -2
- palimpzest/prompts/split_proposer_prompts.py +48 -16
- palimpzest/prompts/utils.py +109 -0
- palimpzest/query/execution/all_sample_execution_strategy.py +1 -1
- palimpzest/query/execution/execution_strategy.py +4 -4
- palimpzest/query/execution/mab_execution_strategy.py +47 -23
- palimpzest/query/execution/parallel_execution_strategy.py +3 -3
- palimpzest/query/execution/single_threaded_execution_strategy.py +8 -8
- palimpzest/query/generators/generators.py +31 -17
- palimpzest/query/operators/__init__.py +15 -2
- palimpzest/query/operators/aggregate.py +21 -19
- palimpzest/query/operators/compute.py +6 -8
- palimpzest/query/operators/convert.py +12 -37
- palimpzest/query/operators/critique_and_refine.py +194 -0
- palimpzest/query/operators/distinct.py +7 -7
- palimpzest/query/operators/filter.py +13 -25
- palimpzest/query/operators/join.py +321 -192
- palimpzest/query/operators/limit.py +4 -4
- palimpzest/query/operators/mixture_of_agents.py +246 -0
- palimpzest/query/operators/physical.py +25 -2
- palimpzest/query/operators/project.py +4 -4
- palimpzest/query/operators/{rag_convert.py → rag.py} +202 -5
- palimpzest/query/operators/retrieve.py +10 -9
- palimpzest/query/operators/scan.py +9 -10
- palimpzest/query/operators/search.py +18 -24
- palimpzest/query/operators/split.py +321 -0
- palimpzest/query/optimizer/__init__.py +12 -8
- palimpzest/query/optimizer/optimizer.py +12 -10
- palimpzest/query/optimizer/rules.py +201 -108
- palimpzest/query/optimizer/tasks.py +18 -6
- palimpzest/query/processor/config.py +2 -2
- palimpzest/query/processor/query_processor.py +2 -2
- palimpzest/query/processor/query_processor_factory.py +9 -5
- palimpzest/validator/validator.py +7 -9
- {palimpzest-0.8.1.dist-info → palimpzest-0.8.3.dist-info}/METADATA +3 -8
- palimpzest-0.8.3.dist-info/RECORD +95 -0
- palimpzest/prompts/critique_and_refine_convert_prompts.py +0 -216
- palimpzest/prompts/moa_proposer_convert_prompts.py +0 -75
- palimpzest/prompts/util_phrases.py +0 -19
- palimpzest/query/operators/critique_and_refine_convert.py +0 -113
- palimpzest/query/operators/mixture_of_agents_convert.py +0 -140
- palimpzest/query/operators/split_convert.py +0 -170
- palimpzest-0.8.1.dist-info/RECORD +0 -95
- {palimpzest-0.8.1.dist-info → palimpzest-0.8.3.dist-info}/WHEEL +0 -0
- {palimpzest-0.8.1.dist-info → palimpzest-0.8.3.dist-info}/licenses/LICENSE +0 -0
- {palimpzest-0.8.1.dist-info → palimpzest-0.8.3.dist-info}/top_level.txt +0 -0
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from pydantic.fields import FieldInfo
|
|
4
|
-
|
|
5
|
-
from palimpzest.constants import MODEL_CARDS, Model, PromptStrategy
|
|
6
|
-
from palimpzest.core.elements.records import DataRecord
|
|
7
|
-
from palimpzest.core.models import GenerationStats, OperatorCostEstimates
|
|
8
|
-
from palimpzest.query.generators.generators import Generator
|
|
9
|
-
from palimpzest.query.operators.convert import LLMConvert
|
|
10
|
-
|
|
11
|
-
# TYPE DEFINITIONS
|
|
12
|
-
FieldName = str
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class MixtureOfAgentsConvert(LLMConvert):
|
|
16
|
-
|
|
17
|
-
def __init__(
|
|
18
|
-
self,
|
|
19
|
-
proposer_models: list[Model],
|
|
20
|
-
temperatures: list[float],
|
|
21
|
-
aggregator_model: Model,
|
|
22
|
-
proposer_prompt_strategy: PromptStrategy = PromptStrategy.COT_MOA_PROPOSER,
|
|
23
|
-
aggregator_prompt_strategy: PromptStrategy = PromptStrategy.COT_MOA_AGG,
|
|
24
|
-
*args,
|
|
25
|
-
**kwargs,
|
|
26
|
-
):
|
|
27
|
-
kwargs["model"] = None
|
|
28
|
-
kwargs["prompt_strategy"] = None
|
|
29
|
-
super().__init__(*args, **kwargs)
|
|
30
|
-
sorted_proposers, sorted_temps = zip(*[(m, t) for m, t in sorted(zip(proposer_models, temperatures), key=lambda pair: pair[0])])
|
|
31
|
-
self.proposer_models = list(sorted_proposers)
|
|
32
|
-
self.temperatures = list(sorted_temps)
|
|
33
|
-
self.aggregator_model = aggregator_model
|
|
34
|
-
self.proposer_prompt_strategy = proposer_prompt_strategy
|
|
35
|
-
self.aggregator_prompt_strategy = aggregator_prompt_strategy
|
|
36
|
-
|
|
37
|
-
# create generators
|
|
38
|
-
self.proposer_generators = [
|
|
39
|
-
Generator(model, self.proposer_prompt_strategy, self.reasoning_effort, self.api_base, self.cardinality, self.desc, self.verbose)
|
|
40
|
-
for model in proposer_models
|
|
41
|
-
]
|
|
42
|
-
self.aggregator_generator = Generator(aggregator_model, self.aggregator_prompt_strategy, self.reasoning_effort, self.api_base, self.cardinality, self.desc, self.verbose)
|
|
43
|
-
|
|
44
|
-
def __str__(self):
|
|
45
|
-
op = super().__str__()
|
|
46
|
-
op += f" Proposer Models: {self.proposer_models}\n"
|
|
47
|
-
op += f" Temperatures: {self.temperatures}\n"
|
|
48
|
-
op += f" Aggregator Model: {self.aggregator_model}\n"
|
|
49
|
-
op += f" Proposer Prompt Strategy: {self.proposer_prompt_strategy.value}\n"
|
|
50
|
-
op += f" Aggregator Prompt Strategy: {self.aggregator_prompt_strategy.value}\n"
|
|
51
|
-
return op
|
|
52
|
-
|
|
53
|
-
def get_id_params(self):
|
|
54
|
-
id_params = super().get_id_params()
|
|
55
|
-
id_params = {
|
|
56
|
-
"proposer_models": [model.value for model in self.proposer_models],
|
|
57
|
-
"temperatures": self.temperatures,
|
|
58
|
-
"aggregator_model": self.aggregator_model.value,
|
|
59
|
-
"proposer_prompt_strategy": self.proposer_prompt_strategy.value,
|
|
60
|
-
"aggregator_prompt_strategy": self.aggregator_prompt_strategy.value,
|
|
61
|
-
**id_params,
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return id_params
|
|
65
|
-
|
|
66
|
-
def get_op_params(self):
|
|
67
|
-
op_params = super().get_op_params()
|
|
68
|
-
op_params = {
|
|
69
|
-
"proposer_models": self.proposer_models,
|
|
70
|
-
"temperatures": self.temperatures,
|
|
71
|
-
"aggregator_model": self.aggregator_model,
|
|
72
|
-
"proposer_prompt_strategy": self.proposer_prompt_strategy,
|
|
73
|
-
"aggregator_prompt_strategy": self.aggregator_prompt_strategy,
|
|
74
|
-
**op_params,
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return op_params
|
|
78
|
-
|
|
79
|
-
def is_image_conversion(self) -> bool:
|
|
80
|
-
return self.proposer_prompt_strategy.is_image_prompt()
|
|
81
|
-
|
|
82
|
-
def naive_cost_estimates(self, source_op_cost_estimates: OperatorCostEstimates) -> OperatorCostEstimates:
|
|
83
|
-
"""
|
|
84
|
-
Currently, we are using multiple proposer models with different temperatures to synthesize
|
|
85
|
-
answers, which are then aggregated and summarized by a single aggregator model. Thus, we
|
|
86
|
-
roughly expect to incur the cost and time of an LLMConvert * (len(proposer_models) + 1).
|
|
87
|
-
In practice, this naive quality estimate will be overwritten by the CostModel's estimate
|
|
88
|
-
once it executes a few instances of the operator.
|
|
89
|
-
"""
|
|
90
|
-
# temporarily set self.model so that super().naive_cost_estimates(...) can compute an estimate
|
|
91
|
-
self.model = self.proposer_models[0]
|
|
92
|
-
|
|
93
|
-
# get naive cost estimates for single LLM call and scale it by number of LLMs used in MoA
|
|
94
|
-
naive_op_cost_estimates = super().naive_cost_estimates(source_op_cost_estimates)
|
|
95
|
-
naive_op_cost_estimates.time_per_record *= (len(self.proposer_models) + 1)
|
|
96
|
-
naive_op_cost_estimates.time_per_record_lower_bound = naive_op_cost_estimates.time_per_record
|
|
97
|
-
naive_op_cost_estimates.time_per_record_upper_bound = naive_op_cost_estimates.time_per_record
|
|
98
|
-
naive_op_cost_estimates.cost_per_record *= (len(self.proposer_models) + 1)
|
|
99
|
-
naive_op_cost_estimates.cost_per_record_lower_bound = naive_op_cost_estimates.cost_per_record
|
|
100
|
-
naive_op_cost_estimates.cost_per_record_upper_bound = naive_op_cost_estimates.cost_per_record
|
|
101
|
-
|
|
102
|
-
# for naive setting, estimate quality as mean of all model qualities
|
|
103
|
-
model_qualities = [
|
|
104
|
-
MODEL_CARDS[model.value]["overall"] / 100.0
|
|
105
|
-
for model in self.proposer_models + [self.aggregator_model]
|
|
106
|
-
]
|
|
107
|
-
naive_op_cost_estimates.quality = sum(model_qualities)/(len(self.proposer_models) + 1)
|
|
108
|
-
naive_op_cost_estimates.quality_lower_bound = naive_op_cost_estimates.quality
|
|
109
|
-
naive_op_cost_estimates.quality_upper_bound = naive_op_cost_estimates.quality
|
|
110
|
-
|
|
111
|
-
# reset self.model to be None
|
|
112
|
-
self.model = None
|
|
113
|
-
|
|
114
|
-
return naive_op_cost_estimates
|
|
115
|
-
|
|
116
|
-
def convert(self, candidate: DataRecord, fields: dict[str, FieldInfo]) -> tuple[dict[str, list], GenerationStats]:
|
|
117
|
-
# get input fields
|
|
118
|
-
input_fields = self.get_input_fields()
|
|
119
|
-
|
|
120
|
-
# execute generator models in sequence
|
|
121
|
-
proposer_model_final_answers, proposer_model_generation_stats = [], []
|
|
122
|
-
for proposer_generator, temperature in zip(self.proposer_generators, self.temperatures):
|
|
123
|
-
gen_kwargs = {"project_cols": input_fields, "output_schema": self.output_schema, "temperature": temperature}
|
|
124
|
-
_, reasoning, generation_stats, _ = proposer_generator(candidate, fields, json_output=False, **gen_kwargs)
|
|
125
|
-
proposer_text = f"REASONING:{reasoning}\n"
|
|
126
|
-
proposer_model_final_answers.append(proposer_text)
|
|
127
|
-
proposer_model_generation_stats.append(generation_stats)
|
|
128
|
-
|
|
129
|
-
# call the aggregator
|
|
130
|
-
gen_kwargs = {
|
|
131
|
-
"project_cols": input_fields,
|
|
132
|
-
"output_schema": self.output_schema,
|
|
133
|
-
"model_responses": proposer_model_final_answers,
|
|
134
|
-
}
|
|
135
|
-
field_answers, _, aggregator_gen_stats, _ = self.aggregator_generator(candidate, fields, **gen_kwargs)
|
|
136
|
-
|
|
137
|
-
# compute the total generation stats
|
|
138
|
-
generation_stats = sum(proposer_model_generation_stats) + aggregator_gen_stats
|
|
139
|
-
|
|
140
|
-
return field_answers, generation_stats
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import math
|
|
4
|
-
|
|
5
|
-
from pydantic.fields import FieldInfo
|
|
6
|
-
|
|
7
|
-
from palimpzest.constants import (
|
|
8
|
-
MODEL_CARDS,
|
|
9
|
-
NAIVE_EST_NUM_INPUT_TOKENS,
|
|
10
|
-
NAIVE_EST_NUM_OUTPUT_TOKENS,
|
|
11
|
-
PromptStrategy,
|
|
12
|
-
)
|
|
13
|
-
from palimpzest.core.elements.records import DataRecord
|
|
14
|
-
from palimpzest.core.models import GenerationStats, OperatorCostEstimates
|
|
15
|
-
from palimpzest.query.generators.generators import Generator
|
|
16
|
-
from palimpzest.query.operators.convert import LLMConvert
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class SplitConvert(LLMConvert):
|
|
20
|
-
def __init__(self, num_chunks: int = 2, min_size_to_chunk: int = 1000, *args, **kwargs):
|
|
21
|
-
kwargs["prompt_strategy"] = None
|
|
22
|
-
super().__init__(*args, **kwargs)
|
|
23
|
-
self.num_chunks = num_chunks
|
|
24
|
-
self.min_size_to_chunk = min_size_to_chunk
|
|
25
|
-
self.split_generator = Generator(self.model, PromptStrategy.SPLIT_PROPOSER, self.reasoning_effort, self.api_base, self.cardinality, self.desc, self.verbose)
|
|
26
|
-
self.split_merge_generator = Generator(self.model, PromptStrategy.SPLIT_MERGER, self.reasoning_effort, self.api_base, self.cardinality, self.desc, self.verbose)
|
|
27
|
-
|
|
28
|
-
# crude adjustment factor for naive estimation in no-sentinel setting
|
|
29
|
-
self.naive_quality_adjustment = 0.6
|
|
30
|
-
|
|
31
|
-
def __str__(self):
|
|
32
|
-
op = super().__str__()
|
|
33
|
-
op += f" Chunk Size: {str(self.num_chunks)}\n"
|
|
34
|
-
op += f" Min Size to Chunk: {str(self.min_size_to_chunk)}\n"
|
|
35
|
-
return op
|
|
36
|
-
|
|
37
|
-
def get_id_params(self):
|
|
38
|
-
id_params = super().get_id_params()
|
|
39
|
-
id_params = {"num_chunks": self.num_chunks, "min_size_to_chunk": self.min_size_to_chunk, **id_params}
|
|
40
|
-
|
|
41
|
-
return id_params
|
|
42
|
-
|
|
43
|
-
def get_op_params(self):
|
|
44
|
-
op_params = super().get_op_params()
|
|
45
|
-
return {"num_chunks": self.num_chunks, "min_size_to_chunk": self.min_size_to_chunk, **op_params}
|
|
46
|
-
|
|
47
|
-
def naive_cost_estimates(self, source_op_cost_estimates: OperatorCostEstimates) -> OperatorCostEstimates:
|
|
48
|
-
"""
|
|
49
|
-
Update the cost per record and quality estimates produced by LLMConvert's naive estimates.
|
|
50
|
-
We adjust the cost per record to account for the reduced number of input tokens following
|
|
51
|
-
the retrieval of relevant chunks, and we make a crude estimate of the quality degradation
|
|
52
|
-
that results from using a downsized input (although this may in fact improve quality in
|
|
53
|
-
some cases).
|
|
54
|
-
"""
|
|
55
|
-
# get naive cost estimates from LLMConvert
|
|
56
|
-
naive_op_cost_estimates = super().naive_cost_estimates(source_op_cost_estimates)
|
|
57
|
-
|
|
58
|
-
# re-compute cost per record assuming we use fewer input tokens; naively assume a single input field
|
|
59
|
-
est_num_input_tokens = NAIVE_EST_NUM_INPUT_TOKENS
|
|
60
|
-
est_num_output_tokens = NAIVE_EST_NUM_OUTPUT_TOKENS
|
|
61
|
-
model_conversion_usd_per_record = (
|
|
62
|
-
MODEL_CARDS[self.model.value]["usd_per_input_token"] * est_num_input_tokens
|
|
63
|
-
+ MODEL_CARDS[self.model.value]["usd_per_output_token"] * est_num_output_tokens
|
|
64
|
-
)
|
|
65
|
-
|
|
66
|
-
# set refined estimate of cost per record
|
|
67
|
-
naive_op_cost_estimates.cost_per_record = model_conversion_usd_per_record
|
|
68
|
-
naive_op_cost_estimates.cost_per_record_lower_bound = naive_op_cost_estimates.cost_per_record
|
|
69
|
-
naive_op_cost_estimates.cost_per_record_upper_bound = naive_op_cost_estimates.cost_per_record
|
|
70
|
-
naive_op_cost_estimates.quality = (naive_op_cost_estimates.quality) * self.naive_quality_adjustment
|
|
71
|
-
naive_op_cost_estimates.quality_lower_bound = naive_op_cost_estimates.quality
|
|
72
|
-
naive_op_cost_estimates.quality_upper_bound = naive_op_cost_estimates.quality
|
|
73
|
-
|
|
74
|
-
return naive_op_cost_estimates
|
|
75
|
-
|
|
76
|
-
def is_image_conversion(self) -> bool:
|
|
77
|
-
"""SplitConvert is currently disallowed on image conversions, so this must be False."""
|
|
78
|
-
return False
|
|
79
|
-
|
|
80
|
-
def get_text_chunks(self, text: str, num_chunks: int) -> list[str]:
|
|
81
|
-
"""
|
|
82
|
-
Given a text string, chunk it into num_chunks substrings of roughly equal size.
|
|
83
|
-
"""
|
|
84
|
-
chunks = []
|
|
85
|
-
|
|
86
|
-
idx, chunk_size = 0, math.ceil(len(text) / num_chunks)
|
|
87
|
-
while idx + chunk_size < len(text):
|
|
88
|
-
chunks.append(text[idx : idx + chunk_size])
|
|
89
|
-
idx += chunk_size
|
|
90
|
-
|
|
91
|
-
if idx < len(text):
|
|
92
|
-
chunks.append(text[idx:])
|
|
93
|
-
|
|
94
|
-
return chunks
|
|
95
|
-
|
|
96
|
-
def get_chunked_candidate(self, candidate: DataRecord, input_fields: list[str]) -> list[DataRecord]:
|
|
97
|
-
"""
|
|
98
|
-
For each text field, chunk the content. If a field is smaller than the chunk size,
|
|
99
|
-
simply include the full field.
|
|
100
|
-
"""
|
|
101
|
-
# compute mapping from each field to its chunked content
|
|
102
|
-
field_name_to_chunked_content = {}
|
|
103
|
-
for field_name in input_fields:
|
|
104
|
-
field = candidate.get_field_type(field_name)
|
|
105
|
-
content = candidate[field_name]
|
|
106
|
-
|
|
107
|
-
# do not chunk this field if it is not a string or a list of strings
|
|
108
|
-
is_string_field = field.annotation in [str, str | None]
|
|
109
|
-
is_list_string_field = field.annotation in [list[str], list[str] | None]
|
|
110
|
-
if not (is_string_field or is_list_string_field):
|
|
111
|
-
field_name_to_chunked_content[field_name] = [content]
|
|
112
|
-
continue
|
|
113
|
-
|
|
114
|
-
# if this is a list of strings, join the strings
|
|
115
|
-
if is_list_string_field:
|
|
116
|
-
content = "[" + ", ".join(content) + "]"
|
|
117
|
-
|
|
118
|
-
# skip this field if its length is less than the min size to chunk
|
|
119
|
-
if len(content) < self.min_size_to_chunk:
|
|
120
|
-
field_name_to_chunked_content[field_name] = [content]
|
|
121
|
-
continue
|
|
122
|
-
|
|
123
|
-
# chunk the content
|
|
124
|
-
field_name_to_chunked_content[field_name] = self.get_text_chunks(content, self.num_chunks)
|
|
125
|
-
|
|
126
|
-
# compute the true number of chunks (may be 1 if all fields are not chunked)
|
|
127
|
-
num_chunks = max(len(chunks) for chunks in field_name_to_chunked_content.values())
|
|
128
|
-
|
|
129
|
-
# create the chunked canidates
|
|
130
|
-
candidates = []
|
|
131
|
-
for chunk_idx in range(num_chunks):
|
|
132
|
-
candidate_copy = candidate.copy()
|
|
133
|
-
for field_name in input_fields:
|
|
134
|
-
field_chunks = field_name_to_chunked_content[field_name]
|
|
135
|
-
candidate_copy[field_name] = field_chunks[chunk_idx] if len(field_chunks) > 1 else field_chunks[0]
|
|
136
|
-
|
|
137
|
-
candidates.append(candidate_copy)
|
|
138
|
-
|
|
139
|
-
return candidates
|
|
140
|
-
|
|
141
|
-
def convert(self, candidate: DataRecord, fields: dict[str, FieldInfo]) -> tuple[dict[str, list], GenerationStats]:
|
|
142
|
-
# get the set of input fields to use for the convert operation
|
|
143
|
-
input_fields = self.get_input_fields()
|
|
144
|
-
|
|
145
|
-
# lookup most relevant chunks for each field using embedding search
|
|
146
|
-
candidate_copy = candidate.copy()
|
|
147
|
-
chunked_candidates = self.get_chunked_candidate(candidate_copy, input_fields)
|
|
148
|
-
|
|
149
|
-
# construct kwargs for generation
|
|
150
|
-
gen_kwargs = {"project_cols": input_fields, "output_schema": self.output_schema}
|
|
151
|
-
|
|
152
|
-
# generate outputs for each chunk separately
|
|
153
|
-
chunk_outputs, chunk_generation_stats_lst = [], []
|
|
154
|
-
for candidate in chunked_candidates:
|
|
155
|
-
_, reasoning, chunk_generation_stats, _ = self.split_generator(candidate, fields, json_output=False, **gen_kwargs)
|
|
156
|
-
chunk_outputs.append(reasoning)
|
|
157
|
-
chunk_generation_stats_lst.append(chunk_generation_stats)
|
|
158
|
-
|
|
159
|
-
# call the merger
|
|
160
|
-
gen_kwargs = {
|
|
161
|
-
"project_cols": input_fields,
|
|
162
|
-
"output_schema": self.output_schema,
|
|
163
|
-
"chunk_outputs": chunk_outputs,
|
|
164
|
-
}
|
|
165
|
-
field_answers, _, merger_gen_stats, _ = self.split_merge_generator(candidate, fields, **gen_kwargs)
|
|
166
|
-
|
|
167
|
-
# compute the total generation stats
|
|
168
|
-
generation_stats = sum(chunk_generation_stats_lst) + merger_gen_stats
|
|
169
|
-
|
|
170
|
-
return field_answers, generation_stats
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
palimpzest/__init__.py,sha256=1PzadDDOVMQJKNEYUH0_tw8tQKUYTT31M0vuzTr2Rqk,1694
|
|
2
|
-
palimpzest/constants.py,sha256=GagsbJl1xCAjgt6Biw27KnHSZgiramxhnerhmYe3P_k,24690
|
|
3
|
-
palimpzest/policy.py,sha256=lIvw_C_rmwCH4LZaeNkAuixl8zw9RAW_JcSWSHPjKyc,11628
|
|
4
|
-
palimpzest/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
palimpzest/agents/compute_agents.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
palimpzest/agents/search_agents.py,sha256=t2QMreB5Ph71aoNk5bBtV-0l8im79z-pMAR3JDAySDw,29418
|
|
7
|
-
palimpzest/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
|
-
palimpzest/core/models.py,sha256=fLO4T7x0njNeEbUpbhJm9cdnBva0y0Zw5WGBGdzdS_I,42442
|
|
9
|
-
palimpzest/core/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
-
palimpzest/core/data/context.py,sha256=x1xYyu9qW65dvtK_XayIfv_CgsCEPW6Qe0DTiSf9sjU,16207
|
|
11
|
-
palimpzest/core/data/context_manager.py,sha256=8hAKWD2jhFZgghTu7AYgjkvKDsJUPVxq8g4nG0HWvfo,6150
|
|
12
|
-
palimpzest/core/data/dataset.py,sha256=ShK8KTfghCfuS98oTeAh6UFuvBAllQf1XbGJv91dw1w,28178
|
|
13
|
-
palimpzest/core/data/index_dataset.py,sha256=adO67DgzHhA4lBME0-h4SjXfdz9UcNMSDGXTpUdKbgE,1929
|
|
14
|
-
palimpzest/core/data/iter_dataset.py,sha256=u7eZNWWT84rH_D8LNIuq0NAnm2roX81ifKTYp-hwY7g,20512
|
|
15
|
-
palimpzest/core/elements/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
-
palimpzest/core/elements/filters.py,sha256=fU2x0eWDwfP52_5fUmqJXTuhs4H0vvHtPZLdA3IIw8I,1642
|
|
17
|
-
palimpzest/core/elements/groupbysig.py,sha256=Fcbt1GSAkxIILS5me0sWaNMLiptLJ6NIY6BIC0S-g3k,2318
|
|
18
|
-
palimpzest/core/elements/records.py,sha256=Su4d8GRNp5-Q1nSWANm-jehyw53tHUl20iGluyEk8NI,19053
|
|
19
|
-
palimpzest/core/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
|
-
palimpzest/core/lib/schemas.py,sha256=0qauaG3uW5tCJXNAo1i0G0UgbTaQLSLT6GoNDX8494Q,8376
|
|
21
|
-
palimpzest/prompts/__init__.py,sha256=sdZbC8RWi_IGjFuzKQMdRjS2Ih4zQnkyzFoJ6Q3Ce70,1764
|
|
22
|
-
palimpzest/prompts/agent_prompts.py,sha256=CUzBVLBiPSw8OShtKp4VTpQwtrNMtcMglo-IZHMvuDM,17459
|
|
23
|
-
palimpzest/prompts/context_search.py,sha256=s3pti4XNRiIyiWzjVNL_NqmqEc31jzSKMF2SlN0Aaf8,357
|
|
24
|
-
palimpzest/prompts/convert_prompts.py,sha256=quoIcdIrP4FoPBXlHKeOPjH5lVn8GH30f1tPiu3Xsyw,6037
|
|
25
|
-
palimpzest/prompts/critique_and_refine_convert_prompts.py,sha256=WoXExBxQ7twswd9VCCST26c-2ehZtpD2iQoBi7sqDnQ,7814
|
|
26
|
-
palimpzest/prompts/filter_prompts.py,sha256=drTivlA_WnWkAIzY9GjqO_hfwdy432nMtsV-OYa-mlE,4260
|
|
27
|
-
palimpzest/prompts/join_prompts.py,sha256=fEGZY_zn_dvOJCeUFYrHdg5P3h_H6Fo3FMmdnXwp2l4,5957
|
|
28
|
-
palimpzest/prompts/moa_aggregator_convert_prompts.py,sha256=BQRrtGdr53PTqvXzmFh8kfQ_w9KoKw-zTtmdo-8RFjo,2887
|
|
29
|
-
palimpzest/prompts/moa_proposer_convert_prompts.py,sha256=8vhq0bnikbCzS4CDV5IskFPWF0TC7VZGjeGvpOyIBV8,3476
|
|
30
|
-
palimpzest/prompts/prompt_factory.py,sha256=MpEYoyPXY3gfFGG60O9rlw5A5UejC3CTRHcO6KRhyww,51733
|
|
31
|
-
palimpzest/prompts/split_merge_prompts.py,sha256=0mTZeJhxtvlmv-ro0KwQpxlGgSTwyUhGRHJ-uHk2Zlw,3146
|
|
32
|
-
palimpzest/prompts/split_proposer_prompts.py,sha256=X3hufHPAiQyytZ_TFe2wJkVPgJtClZ9fVgz2zNk2Z5Q,2638
|
|
33
|
-
palimpzest/prompts/util_phrases.py,sha256=ajxzj-B2gE56IENKVKElqw1xKWOF5IahOOqq026Pr00,876
|
|
34
|
-
palimpzest/prompts/validator.py,sha256=pJTZjlt_OiFM3IFOgsJ0jQdayra8iRVrpqENlXI9tQQ,10532
|
|
35
|
-
palimpzest/query/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
-
palimpzest/query/execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
|
-
palimpzest/query/execution/all_sample_execution_strategy.py,sha256=3n2hl8m-WFWIu-a8DiSVsGkz4ej3yB7mSdFR0jsiwAU,14366
|
|
38
|
-
palimpzest/query/execution/execution_strategy.py,sha256=KwBJbWOBOOPBiWRm3ypHcAQiWbCsvtW6UnVU4tHkYz8,18905
|
|
39
|
-
palimpzest/query/execution/execution_strategy_type.py,sha256=vRQBPCQN5_aoyD3TLIeW3VPo15mqF-5RBvEXkENz9FE,987
|
|
40
|
-
palimpzest/query/execution/mab_execution_strategy.py,sha256=LY1JlbYMsnJHCtYjaJ6iklojBqXc2B4KS62lobPFNz0,42341
|
|
41
|
-
palimpzest/query/execution/parallel_execution_strategy.py,sha256=Gn5hB5XddX2jCkxx6d7O-DmitK6fbuwBFnnyKhnGYEw,15706
|
|
42
|
-
palimpzest/query/execution/single_threaded_execution_strategy.py,sha256=1eo-Z9G3u92_PjoSX8HmO3D3phYgA8f0Actbgd1-oKY,16247
|
|
43
|
-
palimpzest/query/generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
|
-
palimpzest/query/generators/generators.py,sha256=WYMcff7axgDEmYqXvy1A-C5FA4s6lI393CcCx-TKTgM,20941
|
|
45
|
-
palimpzest/query/operators/__init__.py,sha256=j-yh0P5tzXGa0JU_g8aNn54wCJDXPCMbmtOmazXXEts,3459
|
|
46
|
-
palimpzest/query/operators/aggregate.py,sha256=QvWr4C1arFSZWVqPSF5F5On6Ise5OF3VVWNGSq6Gfjk,11230
|
|
47
|
-
palimpzest/query/operators/compute.py,sha256=bxMKLRU_o7v603daKeR0FayDZ_V6NLI1fGzgu6E-sac,8473
|
|
48
|
-
palimpzest/query/operators/convert.py,sha256=mpXXYdgcH6zPqypzh3SjTqHjq7PDEbkfdZ1_XEml-nw,17334
|
|
49
|
-
palimpzest/query/operators/critique_and_refine_convert.py,sha256=PbtKva6e3fh3yeUMGlkcpacPD003bFBzgBsw_yy-8fw,5293
|
|
50
|
-
palimpzest/query/operators/distinct.py,sha256=MuF3NlC0QMTSGs0_fe2oly0I5Ow0hfOa7h8BFGhHiCs,2594
|
|
51
|
-
palimpzest/query/operators/filter.py,sha256=jmSGV7xZ8uxXzH-Oko7l8ZPZxNf_qJNkYVAYgiSHl9g,10802
|
|
52
|
-
palimpzest/query/operators/join.py,sha256=rs9_Y59082dlnSJu9rpRDEuv7jDPItKSpYsC8FCMFDM,17837
|
|
53
|
-
palimpzest/query/operators/limit.py,sha256=upJ775cGkxjFHRJm8GpSvtJN1cspg2FVYLN_MrIfUo4,2113
|
|
54
|
-
palimpzest/query/operators/logical.py,sha256=K_dRlNKkda35kQ7gYGsrW9PoFuDPzexpjtDq_FYdhVw,20223
|
|
55
|
-
palimpzest/query/operators/mixture_of_agents_convert.py,sha256=4v2V612NqdVD0RmcJ5VSgTiVliObku-t-A79SXVnpk0,6753
|
|
56
|
-
palimpzest/query/operators/physical.py,sha256=buPZjtP4HKNVfOCNWdBtDnRS217dSsIG74gqZ1jmoyo,8320
|
|
57
|
-
palimpzest/query/operators/project.py,sha256=RX5SbHFRwHcMfiQRofIPQr-AHgIDYm68ifiFZAPu7Fo,2094
|
|
58
|
-
palimpzest/query/operators/rag_convert.py,sha256=1QQGrE22-Ec3-MNbnaU3k4TGHdpi2qZqZR9MHUniEM4,10691
|
|
59
|
-
palimpzest/query/operators/retrieve.py,sha256=v1FTFsSctqH4B37aWgBXYIxgOMJwRWQ2kwwXu1huwaQ,13106
|
|
60
|
-
palimpzest/query/operators/scan.py,sha256=Da_EZUrArzlAameHYCmtqo-xbPOFvbTYSktrUcUEUSc,7398
|
|
61
|
-
palimpzest/query/operators/search.py,sha256=xydO5Kni0RArpvLSn2ajzD4TcH442VjpP2x9NakjzaA,22842
|
|
62
|
-
palimpzest/query/operators/split_convert.py,sha256=acCPlkrUfqHhGD7bU2AXQAhIEeAEIh0itamuCOm4KBk,7787
|
|
63
|
-
palimpzest/query/optimizer/__init__.py,sha256=L2E1rOA-8O9oH6JL56wLI1qUVxXBLubJEG1IHMH-HU4,2384
|
|
64
|
-
palimpzest/query/optimizer/cost_model.py,sha256=OldPy-TJdfsQbYRoKlb3yWeKbi15jcldTIUS6BTi9T8,12678
|
|
65
|
-
palimpzest/query/optimizer/optimizer.py,sha256=mgM6c0d_voGNun2hMzqjfumJVieACtcHsNnBP4LyXAA,19626
|
|
66
|
-
palimpzest/query/optimizer/optimizer_strategy.py,sha256=9YlNGkqwgX0WaV6y8tKOOHVN8kC8GjDI3DttvGW5SYY,10206
|
|
67
|
-
palimpzest/query/optimizer/optimizer_strategy_type.py,sha256=V-MMHvJdnfZKoUX1xxxwh66q1RjN2FL35IsiT1C62c8,1084
|
|
68
|
-
palimpzest/query/optimizer/plan.py,sha256=VIhN7tWT7EoRE9BKYa1qvvOhX7dEaM-aiobByX0qjzg,22900
|
|
69
|
-
palimpzest/query/optimizer/primitives.py,sha256=jMMVq37y1tWiPU1lSSKQP9OP-mzkpSxSmUeDajRYYOQ,5445
|
|
70
|
-
palimpzest/query/optimizer/rules.py,sha256=9AsuVjhiZUc0snQPNhIqeyKpmqFsSv7e-v6BEbp9CDw,43315
|
|
71
|
-
palimpzest/query/optimizer/tasks.py,sha256=DJcKDNbVJox61rnTW0HgT1PtxGx2P_NiLvNroXie-Lg,29509
|
|
72
|
-
palimpzest/query/processor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
73
|
-
palimpzest/query/processor/config.py,sha256=w2nkb6UXHw5HOvRZO1KBgb3y_tE2On9gmo_G7YGvnf8,2366
|
|
74
|
-
palimpzest/query/processor/query_processor.py,sha256=W01-2FocN1Jsv58gmEo5ALTIcpLt7D0dmI8kghSCdBk,6291
|
|
75
|
-
palimpzest/query/processor/query_processor_factory.py,sha256=WTp58KrtVzkAaO_cLgnlkr6o7BJk76cvmGcOmsTy_Ww,7896
|
|
76
|
-
palimpzest/schemabuilder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
77
|
-
palimpzest/schemabuilder/schema_builder.py,sha256=QraGp66dcD-ej6Y2mER40o86G9JqlBkL7swkJzjUAIY,7968
|
|
78
|
-
palimpzest/tools/README.md,sha256=56_6LPG80uc0CLVhTBP6I1wgIffNv9cyTr0TmVZqmrM,483
|
|
79
|
-
palimpzest/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
80
|
-
palimpzest/tools/allenpdf.py,sha256=fXMOmSDdSSLXDKAPYYJ8k4egtWEBf_Me9Lq9tM3iyoA,1690
|
|
81
|
-
palimpzest/tools/pdfparser.py,sha256=0DOVUZLxYfqjxM8WNEfYcyiXb1qW9BWVIHEB_B_YhWA,9570
|
|
82
|
-
palimpzest/tools/skema_tools.py,sha256=HXUFpjMhbVxZwKKkATeK-FwtlTCawaCbeP-uHntI1Kg,669
|
|
83
|
-
palimpzest/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
84
|
-
palimpzest/utils/env_helpers.py,sha256=n81KzoJ459pRxo7QmJA7duazwWsfoMGTHc71D2LatFk,334
|
|
85
|
-
palimpzest/utils/hash_helpers.py,sha256=3A8dA7SbXTwnnvZvPVNqqMLlVRhCKyKF_bjNNAu3Exk,334
|
|
86
|
-
palimpzest/utils/model_helpers.py,sha256=X6SlMgD5I5Aj_cxaFaoGaaNvOOqTNZVmjj6zbfn63Yk,2476
|
|
87
|
-
palimpzest/utils/progress.py,sha256=7gucyZr82udMDZitrrkAOSKHZVljE3R2wv9nf5gA5TM,20807
|
|
88
|
-
palimpzest/utils/udfs.py,sha256=LjHic54B1az-rKgNLur0wOpaz2ko_UodjLEJrazkxvY,1854
|
|
89
|
-
palimpzest/validator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
90
|
-
palimpzest/validator/validator.py,sha256=J2tGvJqfg6v5lOQDYYaqAa9d37uVHBrqkNs-a8d1Ic0,16365
|
|
91
|
-
palimpzest-0.8.1.dist-info/licenses/LICENSE,sha256=5GUlHy9lr-Py9kvV38FF1m3yy3NqM18fefuE9wkWumo,1079
|
|
92
|
-
palimpzest-0.8.1.dist-info/METADATA,sha256=iA31ZJnmE0bVBJHjE3scrTM7xeYnhAbfu8FatcgPYzU,7286
|
|
93
|
-
palimpzest-0.8.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
94
|
-
palimpzest-0.8.1.dist-info/top_level.txt,sha256=raV06dJUgohefUn3ZyJS2uqp_Y76EOLA9Y2e_fxt8Ew,11
|
|
95
|
-
palimpzest-0.8.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|