edsl 0.1.38.dev2__py3-none-any.whl → 0.1.38.dev3__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.
- edsl/Base.py +303 -303
- edsl/BaseDiff.py +260 -260
- edsl/TemplateLoader.py +24 -24
- edsl/__init__.py +49 -49
- edsl/__version__.py +1 -1
- edsl/agents/Agent.py +858 -858
- edsl/agents/AgentList.py +362 -362
- edsl/agents/Invigilator.py +222 -222
- edsl/agents/InvigilatorBase.py +284 -284
- edsl/agents/PromptConstructor.py +353 -353
- edsl/agents/__init__.py +3 -3
- edsl/agents/descriptors.py +99 -99
- edsl/agents/prompt_helpers.py +129 -129
- edsl/auto/AutoStudy.py +117 -117
- edsl/auto/StageBase.py +230 -230
- edsl/auto/StageGenerateSurvey.py +178 -178
- edsl/auto/StageLabelQuestions.py +125 -125
- edsl/auto/StagePersona.py +61 -61
- edsl/auto/StagePersonaDimensionValueRanges.py +88 -88
- edsl/auto/StagePersonaDimensionValues.py +74 -74
- edsl/auto/StagePersonaDimensions.py +69 -69
- edsl/auto/StageQuestions.py +73 -73
- edsl/auto/SurveyCreatorPipeline.py +21 -21
- edsl/auto/utilities.py +224 -224
- edsl/base/Base.py +279 -279
- edsl/config.py +149 -149
- edsl/conversation/Conversation.py +290 -290
- edsl/conversation/car_buying.py +58 -58
- edsl/conversation/chips.py +95 -95
- edsl/conversation/mug_negotiation.py +81 -81
- edsl/conversation/next_speaker_utilities.py +93 -93
- edsl/coop/PriceFetcher.py +54 -54
- edsl/coop/__init__.py +2 -2
- edsl/coop/coop.py +961 -961
- edsl/coop/utils.py +131 -131
- edsl/data/Cache.py +530 -530
- edsl/data/CacheEntry.py +228 -228
- edsl/data/CacheHandler.py +149 -149
- edsl/data/RemoteCacheSync.py +97 -97
- edsl/data/SQLiteDict.py +292 -292
- edsl/data/__init__.py +4 -4
- edsl/data/orm.py +10 -10
- edsl/data_transfer_models.py +73 -73
- edsl/enums.py +173 -173
- edsl/exceptions/BaseException.py +21 -21
- edsl/exceptions/__init__.py +54 -54
- edsl/exceptions/agents.py +42 -42
- edsl/exceptions/cache.py +5 -5
- edsl/exceptions/configuration.py +16 -16
- edsl/exceptions/coop.py +10 -10
- edsl/exceptions/data.py +14 -14
- edsl/exceptions/general.py +34 -34
- edsl/exceptions/jobs.py +33 -33
- edsl/exceptions/language_models.py +63 -63
- edsl/exceptions/prompts.py +15 -15
- edsl/exceptions/questions.py +91 -91
- edsl/exceptions/results.py +29 -29
- edsl/exceptions/scenarios.py +22 -22
- edsl/exceptions/surveys.py +37 -37
- edsl/inference_services/AnthropicService.py +87 -87
- edsl/inference_services/AwsBedrock.py +120 -120
- edsl/inference_services/AzureAI.py +217 -217
- edsl/inference_services/DeepInfraService.py +18 -18
- edsl/inference_services/GoogleService.py +156 -156
- edsl/inference_services/GroqService.py +20 -20
- edsl/inference_services/InferenceServiceABC.py +147 -147
- edsl/inference_services/InferenceServicesCollection.py +97 -97
- edsl/inference_services/MistralAIService.py +123 -123
- edsl/inference_services/OllamaService.py +18 -18
- edsl/inference_services/OpenAIService.py +224 -224
- edsl/inference_services/TestService.py +89 -89
- edsl/inference_services/TogetherAIService.py +170 -170
- edsl/inference_services/models_available_cache.py +118 -118
- edsl/inference_services/rate_limits_cache.py +25 -25
- edsl/inference_services/registry.py +39 -39
- edsl/inference_services/write_available.py +10 -10
- edsl/jobs/Answers.py +56 -56
- edsl/jobs/Jobs.py +1358 -1358
- edsl/jobs/__init__.py +1 -1
- edsl/jobs/buckets/BucketCollection.py +63 -63
- edsl/jobs/buckets/ModelBuckets.py +65 -65
- edsl/jobs/buckets/TokenBucket.py +251 -251
- edsl/jobs/interviews/Interview.py +661 -661
- edsl/jobs/interviews/InterviewExceptionCollection.py +99 -99
- edsl/jobs/interviews/InterviewExceptionEntry.py +186 -186
- edsl/jobs/interviews/InterviewStatistic.py +63 -63
- edsl/jobs/interviews/InterviewStatisticsCollection.py +25 -25
- edsl/jobs/interviews/InterviewStatusDictionary.py +78 -78
- edsl/jobs/interviews/InterviewStatusLog.py +92 -92
- edsl/jobs/interviews/ReportErrors.py +66 -66
- edsl/jobs/interviews/interview_status_enum.py +9 -9
- edsl/jobs/runners/JobsRunnerAsyncio.py +361 -361
- edsl/jobs/runners/JobsRunnerStatus.py +332 -332
- edsl/jobs/tasks/QuestionTaskCreator.py +242 -242
- edsl/jobs/tasks/TaskCreators.py +64 -64
- edsl/jobs/tasks/TaskHistory.py +451 -451
- edsl/jobs/tasks/TaskStatusLog.py +23 -23
- edsl/jobs/tasks/task_status_enum.py +163 -163
- edsl/jobs/tokens/InterviewTokenUsage.py +27 -27
- edsl/jobs/tokens/TokenUsage.py +34 -34
- edsl/language_models/KeyLookup.py +30 -30
- edsl/language_models/LanguageModel.py +708 -708
- edsl/language_models/ModelList.py +109 -109
- edsl/language_models/RegisterLanguageModelsMeta.py +184 -184
- edsl/language_models/__init__.py +3 -3
- edsl/language_models/fake_openai_call.py +15 -15
- edsl/language_models/fake_openai_service.py +61 -61
- edsl/language_models/registry.py +137 -137
- edsl/language_models/repair.py +156 -156
- edsl/language_models/unused/ReplicateBase.py +83 -83
- edsl/language_models/utilities.py +64 -64
- edsl/notebooks/Notebook.py +258 -258
- edsl/notebooks/__init__.py +1 -1
- edsl/prompts/Prompt.py +357 -357
- edsl/prompts/__init__.py +2 -2
- edsl/questions/AnswerValidatorMixin.py +289 -289
- edsl/questions/QuestionBase.py +660 -660
- edsl/questions/QuestionBaseGenMixin.py +161 -161
- edsl/questions/QuestionBasePromptsMixin.py +217 -217
- edsl/questions/QuestionBudget.py +227 -227
- edsl/questions/QuestionCheckBox.py +359 -359
- edsl/questions/QuestionExtract.py +183 -183
- edsl/questions/QuestionFreeText.py +114 -114
- edsl/questions/QuestionFunctional.py +166 -166
- edsl/questions/QuestionList.py +231 -231
- edsl/questions/QuestionMultipleChoice.py +286 -286
- edsl/questions/QuestionNumerical.py +153 -153
- edsl/questions/QuestionRank.py +324 -324
- edsl/questions/Quick.py +41 -41
- edsl/questions/RegisterQuestionsMeta.py +71 -71
- edsl/questions/ResponseValidatorABC.py +174 -174
- edsl/questions/SimpleAskMixin.py +73 -73
- edsl/questions/__init__.py +26 -26
- edsl/questions/compose_questions.py +98 -98
- edsl/questions/decorators.py +21 -21
- edsl/questions/derived/QuestionLikertFive.py +76 -76
- edsl/questions/derived/QuestionLinearScale.py +87 -87
- edsl/questions/derived/QuestionTopK.py +93 -93
- edsl/questions/derived/QuestionYesNo.py +82 -82
- edsl/questions/descriptors.py +413 -413
- edsl/questions/prompt_templates/question_budget.jinja +13 -13
- edsl/questions/prompt_templates/question_checkbox.jinja +32 -32
- edsl/questions/prompt_templates/question_extract.jinja +11 -11
- edsl/questions/prompt_templates/question_free_text.jinja +3 -3
- edsl/questions/prompt_templates/question_linear_scale.jinja +11 -11
- edsl/questions/prompt_templates/question_list.jinja +17 -17
- edsl/questions/prompt_templates/question_multiple_choice.jinja +33 -33
- edsl/questions/prompt_templates/question_numerical.jinja +36 -36
- edsl/questions/question_registry.py +147 -147
- edsl/questions/settings.py +12 -12
- edsl/questions/templates/budget/answering_instructions.jinja +7 -7
- edsl/questions/templates/budget/question_presentation.jinja +7 -7
- edsl/questions/templates/checkbox/answering_instructions.jinja +10 -10
- edsl/questions/templates/checkbox/question_presentation.jinja +22 -22
- edsl/questions/templates/extract/answering_instructions.jinja +7 -7
- edsl/questions/templates/likert_five/answering_instructions.jinja +10 -10
- edsl/questions/templates/likert_five/question_presentation.jinja +11 -11
- edsl/questions/templates/linear_scale/answering_instructions.jinja +5 -5
- edsl/questions/templates/linear_scale/question_presentation.jinja +5 -5
- edsl/questions/templates/list/answering_instructions.jinja +3 -3
- edsl/questions/templates/list/question_presentation.jinja +5 -5
- edsl/questions/templates/multiple_choice/answering_instructions.jinja +9 -9
- edsl/questions/templates/multiple_choice/question_presentation.jinja +11 -11
- edsl/questions/templates/numerical/answering_instructions.jinja +6 -6
- edsl/questions/templates/numerical/question_presentation.jinja +6 -6
- edsl/questions/templates/rank/answering_instructions.jinja +11 -11
- edsl/questions/templates/rank/question_presentation.jinja +15 -15
- edsl/questions/templates/top_k/answering_instructions.jinja +8 -8
- edsl/questions/templates/top_k/question_presentation.jinja +22 -22
- edsl/questions/templates/yes_no/answering_instructions.jinja +6 -6
- edsl/questions/templates/yes_no/question_presentation.jinja +11 -11
- edsl/results/Dataset.py +293 -293
- edsl/results/DatasetExportMixin.py +717 -717
- edsl/results/DatasetTree.py +145 -145
- edsl/results/Result.py +456 -456
- edsl/results/Results.py +1071 -1071
- edsl/results/ResultsDBMixin.py +238 -238
- edsl/results/ResultsExportMixin.py +43 -43
- edsl/results/ResultsFetchMixin.py +33 -33
- edsl/results/ResultsGGMixin.py +121 -121
- edsl/results/ResultsToolsMixin.py +98 -98
- edsl/results/Selector.py +135 -135
- edsl/results/__init__.py +2 -2
- edsl/results/tree_explore.py +115 -115
- edsl/scenarios/FileStore.py +458 -458
- edsl/scenarios/Scenario.py +544 -544
- edsl/scenarios/ScenarioHtmlMixin.py +64 -64
- edsl/scenarios/ScenarioList.py +1112 -1112
- edsl/scenarios/ScenarioListExportMixin.py +52 -52
- edsl/scenarios/ScenarioListPdfMixin.py +261 -261
- edsl/scenarios/__init__.py +4 -4
- edsl/shared.py +1 -1
- edsl/study/ObjectEntry.py +173 -173
- edsl/study/ProofOfWork.py +113 -113
- edsl/study/SnapShot.py +80 -80
- edsl/study/Study.py +528 -528
- edsl/study/__init__.py +4 -4
- edsl/surveys/DAG.py +148 -148
- edsl/surveys/Memory.py +31 -31
- edsl/surveys/MemoryPlan.py +244 -244
- edsl/surveys/Rule.py +326 -326
- edsl/surveys/RuleCollection.py +387 -387
- edsl/surveys/Survey.py +1787 -1787
- edsl/surveys/SurveyCSS.py +261 -261
- edsl/surveys/SurveyExportMixin.py +259 -259
- edsl/surveys/SurveyFlowVisualizationMixin.py +121 -121
- edsl/surveys/SurveyQualtricsImport.py +284 -284
- edsl/surveys/__init__.py +3 -3
- edsl/surveys/base.py +53 -53
- edsl/surveys/descriptors.py +56 -56
- edsl/surveys/instructions/ChangeInstruction.py +49 -49
- edsl/surveys/instructions/Instruction.py +53 -53
- edsl/surveys/instructions/InstructionCollection.py +77 -77
- edsl/templates/error_reporting/base.html +23 -23
- edsl/templates/error_reporting/exceptions_by_model.html +34 -34
- edsl/templates/error_reporting/exceptions_by_question_name.html +16 -16
- edsl/templates/error_reporting/exceptions_by_type.html +16 -16
- edsl/templates/error_reporting/interview_details.html +115 -115
- edsl/templates/error_reporting/interviews.html +9 -9
- edsl/templates/error_reporting/overview.html +4 -4
- edsl/templates/error_reporting/performance_plot.html +1 -1
- edsl/templates/error_reporting/report.css +73 -73
- edsl/templates/error_reporting/report.html +117 -117
- edsl/templates/error_reporting/report.js +25 -25
- edsl/tools/__init__.py +1 -1
- edsl/tools/clusters.py +192 -192
- edsl/tools/embeddings.py +27 -27
- edsl/tools/embeddings_plotting.py +118 -118
- edsl/tools/plotting.py +112 -112
- edsl/tools/summarize.py +18 -18
- edsl/utilities/SystemInfo.py +28 -28
- edsl/utilities/__init__.py +22 -22
- edsl/utilities/ast_utilities.py +25 -25
- edsl/utilities/data/Registry.py +6 -6
- edsl/utilities/data/__init__.py +1 -1
- edsl/utilities/data/scooter_results.json +1 -1
- edsl/utilities/decorators.py +77 -77
- edsl/utilities/gcp_bucket/cloud_storage.py +96 -96
- edsl/utilities/interface.py +627 -627
- edsl/utilities/naming_utilities.py +263 -263
- edsl/utilities/repair_functions.py +28 -28
- edsl/utilities/restricted_python.py +70 -70
- edsl/utilities/utilities.py +409 -409
- {edsl-0.1.38.dev2.dist-info → edsl-0.1.38.dev3.dist-info}/LICENSE +21 -21
- {edsl-0.1.38.dev2.dist-info → edsl-0.1.38.dev3.dist-info}/METADATA +1 -1
- edsl-0.1.38.dev3.dist-info/RECORD +269 -0
- edsl-0.1.38.dev2.dist-info/RECORD +0 -269
- {edsl-0.1.38.dev2.dist-info → edsl-0.1.38.dev3.dist-info}/WHEEL +0 -0
@@ -1,39 +1,39 @@
|
|
1
|
-
from edsl.inference_services.InferenceServicesCollection import (
|
2
|
-
InferenceServicesCollection,
|
3
|
-
)
|
4
|
-
|
5
|
-
from edsl.inference_services.OpenAIService import OpenAIService
|
6
|
-
from edsl.inference_services.AnthropicService import AnthropicService
|
7
|
-
from edsl.inference_services.DeepInfraService import DeepInfraService
|
8
|
-
from edsl.inference_services.GoogleService import GoogleService
|
9
|
-
from edsl.inference_services.GroqService import GroqService
|
10
|
-
from edsl.inference_services.AwsBedrock import AwsBedrockService
|
11
|
-
from edsl.inference_services.AzureAI import AzureAIService
|
12
|
-
from edsl.inference_services.OllamaService import OllamaService
|
13
|
-
from edsl.inference_services.TestService import TestService
|
14
|
-
from edsl.inference_services.TogetherAIService import TogetherAIService
|
15
|
-
|
16
|
-
try:
|
17
|
-
from edsl.inference_services.MistralAIService import MistralAIService
|
18
|
-
|
19
|
-
mistral_available = True
|
20
|
-
except Exception as e:
|
21
|
-
mistral_available = False
|
22
|
-
|
23
|
-
services = [
|
24
|
-
OpenAIService,
|
25
|
-
AnthropicService,
|
26
|
-
DeepInfraService,
|
27
|
-
GoogleService,
|
28
|
-
GroqService,
|
29
|
-
AwsBedrockService,
|
30
|
-
AzureAIService,
|
31
|
-
OllamaService,
|
32
|
-
TestService,
|
33
|
-
TogetherAIService,
|
34
|
-
]
|
35
|
-
|
36
|
-
if mistral_available:
|
37
|
-
services.append(MistralAIService)
|
38
|
-
|
39
|
-
default = InferenceServicesCollection(services)
|
1
|
+
from edsl.inference_services.InferenceServicesCollection import (
|
2
|
+
InferenceServicesCollection,
|
3
|
+
)
|
4
|
+
|
5
|
+
from edsl.inference_services.OpenAIService import OpenAIService
|
6
|
+
from edsl.inference_services.AnthropicService import AnthropicService
|
7
|
+
from edsl.inference_services.DeepInfraService import DeepInfraService
|
8
|
+
from edsl.inference_services.GoogleService import GoogleService
|
9
|
+
from edsl.inference_services.GroqService import GroqService
|
10
|
+
from edsl.inference_services.AwsBedrock import AwsBedrockService
|
11
|
+
from edsl.inference_services.AzureAI import AzureAIService
|
12
|
+
from edsl.inference_services.OllamaService import OllamaService
|
13
|
+
from edsl.inference_services.TestService import TestService
|
14
|
+
from edsl.inference_services.TogetherAIService import TogetherAIService
|
15
|
+
|
16
|
+
try:
|
17
|
+
from edsl.inference_services.MistralAIService import MistralAIService
|
18
|
+
|
19
|
+
mistral_available = True
|
20
|
+
except Exception as e:
|
21
|
+
mistral_available = False
|
22
|
+
|
23
|
+
services = [
|
24
|
+
OpenAIService,
|
25
|
+
AnthropicService,
|
26
|
+
DeepInfraService,
|
27
|
+
GoogleService,
|
28
|
+
GroqService,
|
29
|
+
AwsBedrockService,
|
30
|
+
AzureAIService,
|
31
|
+
OllamaService,
|
32
|
+
TestService,
|
33
|
+
TogetherAIService,
|
34
|
+
]
|
35
|
+
|
36
|
+
if mistral_available:
|
37
|
+
services.append(MistralAIService)
|
38
|
+
|
39
|
+
default = InferenceServicesCollection(services)
|
@@ -1,10 +1,10 @@
|
|
1
|
-
from edsl.inference_services.registry import default
|
2
|
-
|
3
|
-
|
4
|
-
def write_available():
|
5
|
-
d = {}
|
6
|
-
for service in default.services:
|
7
|
-
d[service._inference_service_] = service.available()
|
8
|
-
|
9
|
-
with open("models_available_cache.py", "w") as f:
|
10
|
-
f.write(f"models_available = {d}")
|
1
|
+
from edsl.inference_services.registry import default
|
2
|
+
|
3
|
+
|
4
|
+
def write_available():
|
5
|
+
d = {}
|
6
|
+
for service in default.services:
|
7
|
+
d[service._inference_service_] = service.available()
|
8
|
+
|
9
|
+
with open("models_available_cache.py", "w") as f:
|
10
|
+
f.write(f"models_available = {d}")
|
edsl/jobs/Answers.py
CHANGED
@@ -1,56 +1,56 @@
|
|
1
|
-
"""This module contains the Answers class, which is a helper class to hold the answers to a survey."""
|
2
|
-
|
3
|
-
from collections import UserDict
|
4
|
-
from rich.table import Table
|
5
|
-
from edsl.data_transfer_models import EDSLResultObjectInput
|
6
|
-
|
7
|
-
|
8
|
-
class Answers(UserDict):
|
9
|
-
"""Helper class to hold the answers to a survey."""
|
10
|
-
|
11
|
-
def add_answer(
|
12
|
-
self, response: EDSLResultObjectInput, question: "QuestionBase"
|
13
|
-
) -> None:
|
14
|
-
"""Add a response to the answers dictionary."""
|
15
|
-
answer = response.answer
|
16
|
-
comment = response.comment
|
17
|
-
generated_tokens = response.generated_tokens
|
18
|
-
# record the answer
|
19
|
-
if generated_tokens:
|
20
|
-
self[question.question_name + "_generated_tokens"] = generated_tokens
|
21
|
-
self[question.question_name] = answer
|
22
|
-
if comment:
|
23
|
-
self[question.question_name + "_comment"] = comment
|
24
|
-
|
25
|
-
def replace_missing_answers_with_none(self, survey) -> None:
|
26
|
-
"""Replace missing answers with None. Answers can be missing if the agent skips a question."""
|
27
|
-
for question_name in survey.question_names:
|
28
|
-
if question_name not in self:
|
29
|
-
self[question_name] = None
|
30
|
-
|
31
|
-
def to_dict(self):
|
32
|
-
"""Return a dictionary of the answers."""
|
33
|
-
return self.data
|
34
|
-
|
35
|
-
@classmethod
|
36
|
-
def from_dict(cls, d):
|
37
|
-
"""Return an Answers object from a dictionary."""
|
38
|
-
return cls(d)
|
39
|
-
|
40
|
-
def rich_print(self):
|
41
|
-
"""Display an object as a table."""
|
42
|
-
table = Table(title="Answers")
|
43
|
-
table.add_column("Attribute", style="bold")
|
44
|
-
table.add_column("Value")
|
45
|
-
|
46
|
-
to_display = self
|
47
|
-
for attr_name, attr_value in to_display.items():
|
48
|
-
table.add_row(attr_name, repr(attr_value))
|
49
|
-
|
50
|
-
return table
|
51
|
-
|
52
|
-
|
53
|
-
if __name__ == "__main__":
|
54
|
-
import doctest
|
55
|
-
|
56
|
-
doctest.testmod()
|
1
|
+
"""This module contains the Answers class, which is a helper class to hold the answers to a survey."""
|
2
|
+
|
3
|
+
from collections import UserDict
|
4
|
+
from rich.table import Table
|
5
|
+
from edsl.data_transfer_models import EDSLResultObjectInput
|
6
|
+
|
7
|
+
|
8
|
+
class Answers(UserDict):
|
9
|
+
"""Helper class to hold the answers to a survey."""
|
10
|
+
|
11
|
+
def add_answer(
|
12
|
+
self, response: EDSLResultObjectInput, question: "QuestionBase"
|
13
|
+
) -> None:
|
14
|
+
"""Add a response to the answers dictionary."""
|
15
|
+
answer = response.answer
|
16
|
+
comment = response.comment
|
17
|
+
generated_tokens = response.generated_tokens
|
18
|
+
# record the answer
|
19
|
+
if generated_tokens:
|
20
|
+
self[question.question_name + "_generated_tokens"] = generated_tokens
|
21
|
+
self[question.question_name] = answer
|
22
|
+
if comment:
|
23
|
+
self[question.question_name + "_comment"] = comment
|
24
|
+
|
25
|
+
def replace_missing_answers_with_none(self, survey) -> None:
|
26
|
+
"""Replace missing answers with None. Answers can be missing if the agent skips a question."""
|
27
|
+
for question_name in survey.question_names:
|
28
|
+
if question_name not in self:
|
29
|
+
self[question_name] = None
|
30
|
+
|
31
|
+
def to_dict(self):
|
32
|
+
"""Return a dictionary of the answers."""
|
33
|
+
return self.data
|
34
|
+
|
35
|
+
@classmethod
|
36
|
+
def from_dict(cls, d):
|
37
|
+
"""Return an Answers object from a dictionary."""
|
38
|
+
return cls(d)
|
39
|
+
|
40
|
+
def rich_print(self):
|
41
|
+
"""Display an object as a table."""
|
42
|
+
table = Table(title="Answers")
|
43
|
+
table.add_column("Attribute", style="bold")
|
44
|
+
table.add_column("Value")
|
45
|
+
|
46
|
+
to_display = self
|
47
|
+
for attr_name, attr_value in to_display.items():
|
48
|
+
table.add_row(attr_name, repr(attr_value))
|
49
|
+
|
50
|
+
return table
|
51
|
+
|
52
|
+
|
53
|
+
if __name__ == "__main__":
|
54
|
+
import doctest
|
55
|
+
|
56
|
+
doctest.testmod()
|