edsl 0.1.36.dev1__tar.gz → 0.1.36.dev3__tar.gz
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-0.1.36.dev1 → edsl-0.1.36.dev3}/PKG-INFO +1 -1
- edsl-0.1.36.dev3/edsl/__version__.py +1 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/coop/PriceFetcher.py +14 -18
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/coop/coop.py +4 -1
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/registry.py +24 -16
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/Jobs.py +42 -7
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/runners/JobsRunnerAsyncio.py +12 -9
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/results/Result.py +11 -9
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/pyproject.toml +19 -20
- edsl-0.1.36.dev1/edsl/__version__.py +0 -1
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/LICENSE +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/README.md +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/Base.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/BaseDiff.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/TemplateLoader.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/agents/Agent.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/agents/AgentList.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/agents/Invigilator.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/agents/InvigilatorBase.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/agents/PromptConstructor.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/agents/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/agents/descriptors.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/agents/prompt_helpers.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/auto/AutoStudy.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/auto/StageBase.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/auto/StageGenerateSurvey.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/auto/StageLabelQuestions.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/auto/StagePersona.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/auto/StagePersonaDimensionValueRanges.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/auto/StagePersonaDimensionValues.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/auto/StagePersonaDimensions.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/auto/StageQuestions.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/auto/SurveyCreatorPipeline.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/auto/utilities.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/base/Base.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/config.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conjure/AgentConstructionMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conjure/Conjure.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conjure/InputData.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conjure/InputDataCSV.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conjure/InputDataMixinQuestionStats.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conjure/InputDataPyRead.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conjure/InputDataSPSS.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conjure/InputDataStata.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conjure/QuestionOptionMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conjure/QuestionTypeMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conjure/RawQuestion.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conjure/SurveyResponses.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conjure/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conjure/examples/placeholder.txt +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conjure/naming_utilities.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conjure/utilities.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conversation/Conversation.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conversation/car_buying.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conversation/mug_negotiation.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/conversation/next_speaker_utilities.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/coop/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/coop/utils.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/data/Cache.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/data/CacheEntry.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/data/CacheHandler.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/data/SQLiteDict.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/data/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/data/orm.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/data_transfer_models.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/enums.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/exceptions/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/exceptions/agents.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/exceptions/configuration.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/exceptions/coop.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/exceptions/data.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/exceptions/general.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/exceptions/jobs.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/exceptions/language_models.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/exceptions/prompts.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/exceptions/questions.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/exceptions/results.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/exceptions/surveys.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/AnthropicService.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/AwsBedrock.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/AzureAI.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/DeepInfraService.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/GoogleService.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/GroqService.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/InferenceServiceABC.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/InferenceServicesCollection.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/MistralAIService.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/OllamaService.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/OpenAIService.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/TestService.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/TogetherAIService.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/models_available_cache.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/rate_limits_cache.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/write_available.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/Answers.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/buckets/BucketCollection.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/buckets/ModelBuckets.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/buckets/TokenBucket.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/interviews/Interview.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/interviews/InterviewExceptionCollection.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/interviews/InterviewExceptionEntry.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/interviews/InterviewStatistic.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/interviews/InterviewStatisticsCollection.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/interviews/InterviewStatusDictionary.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/interviews/InterviewStatusLog.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/interviews/ReportErrors.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/interviews/interview_status_enum.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/runners/JobsRunnerStatus.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/runners/JobsRunnerStatusData.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/tasks/QuestionTaskCreator.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/tasks/TaskCreators.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/tasks/TaskHistory.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/tasks/TaskStatusLog.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/tasks/task_status_enum.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/tokens/InterviewTokenUsage.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/jobs/tokens/TokenUsage.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/language_models/LanguageModel.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/language_models/ModelList.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/language_models/RegisterLanguageModelsMeta.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/language_models/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/language_models/fake_openai_call.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/language_models/fake_openai_service.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/language_models/registry.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/language_models/repair.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/language_models/unused/ReplicateBase.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/language_models/utilities.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/notebooks/Notebook.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/notebooks/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/prompts/Prompt.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/prompts/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/AnswerValidatorMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/QuestionBase.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/QuestionBaseGenMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/QuestionBasePromptsMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/QuestionBudget.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/QuestionCheckBox.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/QuestionExtract.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/QuestionFreeText.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/QuestionFunctional.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/QuestionList.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/QuestionMultipleChoice.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/QuestionNumerical.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/QuestionRank.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/Quick.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/RegisterQuestionsMeta.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/ResponseValidatorABC.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/SimpleAskMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/compose_questions.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/decorators.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/derived/QuestionLikertFive.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/derived/QuestionLinearScale.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/derived/QuestionTopK.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/derived/QuestionYesNo.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/derived/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/descriptors.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/prompt_templates/question_budget.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/prompt_templates/question_checkbox.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/prompt_templates/question_extract.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/prompt_templates/question_free_text.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/prompt_templates/question_linear_scale.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/prompt_templates/question_list.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/prompt_templates/question_multiple_choice.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/prompt_templates/question_numerical.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/question_registry.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/settings.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/__pycache__/__init__.cpython-311.pyc +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/budget/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/budget/__pycache__/__init__.cpython-311.pyc +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/budget/answering_instructions.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/budget/question_presentation.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/checkbox/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/checkbox/__pycache__/__init__.cpython-311.pyc +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/checkbox/answering_instructions.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/checkbox/question_presentation.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/extract/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/extract/__pycache__/__init__.cpython-311.pyc +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/extract/answering_instructions.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/extract/question_presentation.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/free_text/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/free_text/__pycache__/__init__.cpython-311.pyc +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/free_text/answering_instructions.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/free_text/question_presentation.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/likert_five/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/likert_five/__pycache__/__init__.cpython-311.pyc +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/likert_five/answering_instructions.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/likert_five/question_presentation.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/linear_scale/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/linear_scale/__pycache__/__init__.cpython-311.pyc +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/linear_scale/answering_instructions.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/linear_scale/question_presentation.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/list/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/list/__pycache__/__init__.cpython-311.pyc +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/list/answering_instructions.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/list/question_presentation.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/multiple_choice/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/multiple_choice/__pycache__/__init__.cpython-311.pyc +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/multiple_choice/answering_instructions.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/multiple_choice/html.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/multiple_choice/question_presentation.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/numerical/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/numerical/__pycache__/__init__.cpython-311.pyc +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/numerical/answering_instructions.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/numerical/question_presentation.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/rank/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/rank/__pycache__/__init__.cpython-311.pyc +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/rank/answering_instructions.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/rank/question_presentation.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/top_k/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/top_k/__pycache__/__init__.cpython-311.pyc +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/top_k/answering_instructions.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/top_k/question_presentation.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/yes_no/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/yes_no/__pycache__/__init__.cpython-311.pyc +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/yes_no/answering_instructions.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/questions/templates/yes_no/question_presentation.jinja +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/results/Dataset.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/results/DatasetExportMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/results/DatasetTree.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/results/Results.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/results/ResultsDBMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/results/ResultsExportMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/results/ResultsFetchMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/results/ResultsGGMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/results/ResultsToolsMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/results/Selector.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/results/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/results/tree_explore.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/scenarios/FileStore.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/scenarios/Scenario.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/scenarios/ScenarioHtmlMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/scenarios/ScenarioList.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/scenarios/ScenarioListExportMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/scenarios/ScenarioListPdfMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/scenarios/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/shared.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/study/ObjectEntry.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/study/ProofOfWork.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/study/SnapShot.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/study/Study.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/study/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/DAG.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/Memory.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/MemoryPlan.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/Rule.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/RuleCollection.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/Survey.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/SurveyCSS.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/SurveyExportMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/SurveyFlowVisualizationMixin.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/SurveyQualtricsImport.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/base.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/descriptors.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/instructions/ChangeInstruction.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/instructions/Instruction.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/instructions/InstructionCollection.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/surveys/instructions/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/templates/error_reporting/base.html +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/templates/error_reporting/exceptions_by_model.html +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/templates/error_reporting/exceptions_by_question_name.html +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/templates/error_reporting/exceptions_by_type.html +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/templates/error_reporting/interview_details.html +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/templates/error_reporting/interviews.html +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/templates/error_reporting/overview.html +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/templates/error_reporting/performance_plot.html +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/templates/error_reporting/report.css +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/templates/error_reporting/report.html +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/templates/error_reporting/report.js +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/tools/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/tools/clusters.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/tools/embeddings.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/tools/embeddings_plotting.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/tools/plotting.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/tools/summarize.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/utilities/SystemInfo.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/utilities/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/utilities/ast_utilities.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/utilities/data/Registry.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/utilities/data/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/utilities/data/scooter_results.json +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/utilities/decorators.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/utilities/gcp_bucket/__init__.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/utilities/gcp_bucket/cloud_storage.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/utilities/interface.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/utilities/repair_functions.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/utilities/restricted_python.py +0 -0
- {edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/utilities/utilities.py +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.1.36.dev3"
|
@@ -16,30 +16,26 @@ class PriceFetcher:
|
|
16
16
|
if self._cached_prices is not None:
|
17
17
|
return self._cached_prices
|
18
18
|
|
19
|
+
import os
|
19
20
|
import requests
|
20
|
-
import
|
21
|
-
from io import StringIO
|
22
|
-
|
23
|
-
sheet_id = "1SAO3Bhntefl0XQHJv27rMxpvu6uzKDWNXFHRa7jrUDs"
|
24
|
-
|
25
|
-
# Construct the URL to fetch the CSV
|
26
|
-
url = f"https://docs.google.com/spreadsheets/d/{sheet_id}/export?format=csv"
|
21
|
+
from edsl import CONFIG
|
27
22
|
|
28
23
|
try:
|
29
|
-
# Fetch the
|
30
|
-
|
24
|
+
# Fetch the pricing data
|
25
|
+
url = f"{CONFIG.EXPECTED_PARROT_URL}/api/v0/prices"
|
26
|
+
api_key = os.getenv("EXPECTED_PARROT_API_KEY")
|
27
|
+
headers = {}
|
28
|
+
if api_key:
|
29
|
+
headers["Authorization"] = f"Bearer {api_key}"
|
30
|
+
else:
|
31
|
+
headers["Authorization"] = f"Bearer None"
|
32
|
+
|
33
|
+
response = requests.get(url, headers=headers, timeout=20)
|
31
34
|
response.raise_for_status() # Raise an exception for bad responses
|
32
35
|
|
33
|
-
# Parse the
|
34
|
-
|
35
|
-
reader = csv.reader(csv_data)
|
36
|
-
|
37
|
-
# Convert to list of dictionaries
|
38
|
-
headers = next(reader)
|
39
|
-
data = [dict(zip(headers, row)) for row in reader]
|
36
|
+
# Parse the data
|
37
|
+
data = response.json()
|
40
38
|
|
41
|
-
# self._cached_prices = data
|
42
|
-
# return data
|
43
39
|
price_lookup = {}
|
44
40
|
for entry in data:
|
45
41
|
service = entry.get("service", None)
|
@@ -584,7 +584,10 @@ class Coop:
|
|
584
584
|
)
|
585
585
|
self._resolve_server_response(response)
|
586
586
|
response_json = response.json()
|
587
|
-
return
|
587
|
+
return {
|
588
|
+
"credits": response_json.get("cost_in_credits"),
|
589
|
+
"usd": response_json.get("cost_in_usd"),
|
590
|
+
}
|
588
591
|
|
589
592
|
################
|
590
593
|
# Remote Errors
|
@@ -11,21 +11,29 @@ from edsl.inference_services.AwsBedrock import AwsBedrockService
|
|
11
11
|
from edsl.inference_services.AzureAI import AzureAIService
|
12
12
|
from edsl.inference_services.OllamaService import OllamaService
|
13
13
|
from edsl.inference_services.TestService import TestService
|
14
|
-
from edsl.inference_services.MistralAIService import MistralAIService
|
15
14
|
from edsl.inference_services.TogetherAIService import TogetherAIService
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
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)
|
@@ -219,11 +219,11 @@ class Jobs(Base):
|
|
219
219
|
price_lookup: dict,
|
220
220
|
inference_service: str,
|
221
221
|
model: str,
|
222
|
-
):
|
222
|
+
) -> dict:
|
223
223
|
"""Estimates the cost of a prompt. Takes piping into account."""
|
224
224
|
|
225
225
|
def get_piping_multiplier(prompt: str):
|
226
|
-
"""Returns 2 if a prompt includes Jinja
|
226
|
+
"""Returns 2 if a prompt includes Jinja braces, and 1 otherwise."""
|
227
227
|
|
228
228
|
if "{{" in prompt and "}}" in prompt:
|
229
229
|
return 2
|
@@ -231,9 +231,25 @@ class Jobs(Base):
|
|
231
231
|
|
232
232
|
# Look up prices per token
|
233
233
|
key = (inference_service, model)
|
234
|
-
|
235
|
-
|
236
|
-
|
234
|
+
|
235
|
+
try:
|
236
|
+
relevant_prices = price_lookup[key]
|
237
|
+
output_price_per_token = 1 / float(
|
238
|
+
relevant_prices["output"]["one_usd_buys"]
|
239
|
+
)
|
240
|
+
input_price_per_token = 1 / float(relevant_prices["input"]["one_usd_buys"])
|
241
|
+
except KeyError:
|
242
|
+
# A KeyError is likely to occur if we cannot retrieve prices (the price_lookup dict is empty)
|
243
|
+
# Use a sensible default
|
244
|
+
|
245
|
+
import warnings
|
246
|
+
|
247
|
+
warnings.warn(
|
248
|
+
"Price data could not be retrieved. Using default estimates for input and output token prices. Input: $0.15 / 1M tokens; Output: $0.60 / 1M tokens"
|
249
|
+
)
|
250
|
+
|
251
|
+
output_price_per_token = 0.00000015 # $0.15 / 1M tokens
|
252
|
+
input_price_per_token = 0.00000060 # $0.60 / 1M tokens
|
237
253
|
|
238
254
|
# Compute the number of characters (double if the question involves piping)
|
239
255
|
user_prompt_chars = len(str(user_prompt)) * get_piping_multiplier(
|
@@ -258,7 +274,7 @@ class Jobs(Base):
|
|
258
274
|
"cost": cost,
|
259
275
|
}
|
260
276
|
|
261
|
-
def estimate_job_cost_from_external_prices(self, price_lookup: dict):
|
277
|
+
def estimate_job_cost_from_external_prices(self, price_lookup: dict) -> dict:
|
262
278
|
"""
|
263
279
|
Estimates the cost of a job according to the following assumptions:
|
264
280
|
|
@@ -341,7 +357,7 @@ class Jobs(Base):
|
|
341
357
|
|
342
358
|
return output
|
343
359
|
|
344
|
-
def estimate_job_cost(self):
|
360
|
+
def estimate_job_cost(self) -> dict:
|
345
361
|
"""
|
346
362
|
Estimates the cost of a job according to the following assumptions:
|
347
363
|
|
@@ -357,6 +373,25 @@ class Jobs(Base):
|
|
357
373
|
|
358
374
|
return self.estimate_job_cost_from_external_prices(price_lookup=price_lookup)
|
359
375
|
|
376
|
+
@staticmethod
|
377
|
+
def compute_job_cost(job_results: "Results") -> float:
|
378
|
+
"""
|
379
|
+
Computes the cost of a completed job in USD.
|
380
|
+
"""
|
381
|
+
total_cost = 0
|
382
|
+
for result in job_results:
|
383
|
+
for key in result.raw_model_response:
|
384
|
+
if key.endswith("_cost"):
|
385
|
+
result_cost = result.raw_model_response[key]
|
386
|
+
|
387
|
+
question_name = key.removesuffix("_cost")
|
388
|
+
cache_used = result.cache_used_dict[question_name]
|
389
|
+
|
390
|
+
if isinstance(result_cost, (int, float)) and not cache_used:
|
391
|
+
total_cost += result_cost
|
392
|
+
|
393
|
+
return total_cost
|
394
|
+
|
360
395
|
@staticmethod
|
361
396
|
def _get_container_class(object):
|
362
397
|
from edsl.agents.AgentList import AgentList
|
@@ -173,19 +173,20 @@ class JobsRunnerAsyncio:
|
|
173
173
|
|
174
174
|
prompt_dictionary = {}
|
175
175
|
for answer_key_name in answer_key_names:
|
176
|
-
prompt_dictionary[
|
177
|
-
answer_key_name
|
178
|
-
|
179
|
-
prompt_dictionary[
|
180
|
-
answer_key_name
|
181
|
-
|
176
|
+
prompt_dictionary[answer_key_name + "_user_prompt"] = (
|
177
|
+
question_name_to_prompts[answer_key_name]["user_prompt"]
|
178
|
+
)
|
179
|
+
prompt_dictionary[answer_key_name + "_system_prompt"] = (
|
180
|
+
question_name_to_prompts[answer_key_name]["system_prompt"]
|
181
|
+
)
|
182
182
|
|
183
183
|
raw_model_results_dictionary = {}
|
184
|
+
cache_used_dictionary = {}
|
184
185
|
for result in valid_results:
|
185
186
|
question_name = result.question_name
|
186
|
-
raw_model_results_dictionary[
|
187
|
-
|
188
|
-
|
187
|
+
raw_model_results_dictionary[question_name + "_raw_model_response"] = (
|
188
|
+
result.raw_model_response
|
189
|
+
)
|
189
190
|
raw_model_results_dictionary[question_name + "_cost"] = result.cost
|
190
191
|
one_use_buys = (
|
191
192
|
"NA"
|
@@ -195,6 +196,7 @@ class JobsRunnerAsyncio:
|
|
195
196
|
else 1.0 / result.cost
|
196
197
|
)
|
197
198
|
raw_model_results_dictionary[question_name + "_one_usd_buys"] = one_use_buys
|
199
|
+
cache_used_dictionary[question_name] = result.cache_used
|
198
200
|
|
199
201
|
result = Result(
|
200
202
|
agent=interview.agent,
|
@@ -207,6 +209,7 @@ class JobsRunnerAsyncio:
|
|
207
209
|
survey=interview.survey,
|
208
210
|
generated_tokens=generated_tokens_dict,
|
209
211
|
comments_dict=comments_dict,
|
212
|
+
cache_used_dict=cache_used_dictionary,
|
210
213
|
)
|
211
214
|
result.interview_hash = hash(interview)
|
212
215
|
|
@@ -75,6 +75,7 @@ class Result(Base, UserDict):
|
|
75
75
|
question_to_attributes: Optional[dict] = None,
|
76
76
|
generated_tokens: Optional[dict] = None,
|
77
77
|
comments_dict: Optional[dict] = None,
|
78
|
+
cache_used_dict: Optional[dict] = None,
|
78
79
|
):
|
79
80
|
"""Initialize a Result object.
|
80
81
|
|
@@ -130,6 +131,7 @@ class Result(Base, UserDict):
|
|
130
131
|
self.question_to_attributes = question_to_attributes
|
131
132
|
self.generated_tokens = generated_tokens
|
132
133
|
self.comments_dict = comments_dict or {}
|
134
|
+
self.cache_used_dict = cache_used_dict or {}
|
133
135
|
|
134
136
|
self._combined_dict = None
|
135
137
|
self._problem_keys = None
|
@@ -153,15 +155,15 @@ class Result(Base, UserDict):
|
|
153
155
|
if key in self.question_to_attributes:
|
154
156
|
# You might be tempted to just use the naked key
|
155
157
|
# but this is a bad idea because it pollutes the namespace
|
156
|
-
question_text_dict[
|
157
|
-
key
|
158
|
-
|
159
|
-
question_options_dict[
|
160
|
-
key
|
161
|
-
|
162
|
-
question_type_dict[
|
163
|
-
key
|
164
|
-
|
158
|
+
question_text_dict[key + "_question_text"] = (
|
159
|
+
self.question_to_attributes[key]["question_text"]
|
160
|
+
)
|
161
|
+
question_options_dict[key + "_question_options"] = (
|
162
|
+
self.question_to_attributes[key]["question_options"]
|
163
|
+
)
|
164
|
+
question_type_dict[key + "_question_type"] = (
|
165
|
+
self.question_to_attributes[key]["question_type"]
|
166
|
+
)
|
165
167
|
|
166
168
|
return {
|
167
169
|
"agent": self.agent.traits
|
@@ -1,19 +1,28 @@
|
|
1
1
|
[build-system]
|
2
2
|
build-backend = "poetry.core.masonry.api"
|
3
|
-
requires = ["poetry-core", "setuptools<72.0"]
|
3
|
+
requires = [ "poetry-core", "setuptools<72.0",]
|
4
4
|
|
5
5
|
[tool.poetry]
|
6
|
-
authors = ["Apostolos Filippas <apostolos@expectedparrot.com>", "John Horton <john@expectedparrot.com>", "Robin Horton <robin@expectedparrot.com>"]
|
7
|
-
classifiers = ["Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules"]
|
6
|
+
authors = [ "Apostolos Filippas <apostolos@expectedparrot.com>", "John Horton <john@expectedparrot.com>", "Robin Horton <robin@expectedparrot.com>",]
|
7
|
+
classifiers = [ "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules",]
|
8
8
|
description = "Create and analyze LLM-based surveys"
|
9
9
|
documentation = "https://docs.expectedparrot.com"
|
10
10
|
homepage = "https://www.expectedparrot.com/"
|
11
|
-
include = ["edsl/questions/templates/**/*"]
|
12
|
-
keywords = ["LLM", "social science", "surveys", "user research"]
|
11
|
+
include = [ "edsl/questions/templates/**/*",]
|
12
|
+
keywords = [ "LLM", "social science", "surveys", "user research",]
|
13
13
|
license = "MIT"
|
14
14
|
name = "edsl"
|
15
15
|
readme = "README.md"
|
16
|
-
version = "0.1.36.
|
16
|
+
version = "0.1.36.dev3"
|
17
|
+
[[tool.poetry.packages]]
|
18
|
+
include = "edsl"
|
19
|
+
|
20
|
+
[tool.tomlsort]
|
21
|
+
all = true
|
22
|
+
in_place = true
|
23
|
+
spaces_before_inline_comment = 2
|
24
|
+
spaces_indent_inline_array = 4
|
25
|
+
trailing_comma_inline_array = true
|
17
26
|
|
18
27
|
[tool.poetry.dependencies]
|
19
28
|
python = ">=3.9.1,<3.13"
|
@@ -49,9 +58,12 @@ urllib3 = ">=1.25.4,<1.27"
|
|
49
58
|
google-generativeai = "^0.8.2"
|
50
59
|
|
51
60
|
[tool.poetry.dependencies.black]
|
52
|
-
extras = ["jupyter"]
|
61
|
+
extras = [ "jupyter",]
|
53
62
|
version = "^24.4.2"
|
54
63
|
|
64
|
+
[tool.tomlsort.overrides."tool.poetry.dependencies"]
|
65
|
+
table_keys = false
|
66
|
+
|
55
67
|
[tool.poetry.group.dev.dependencies]
|
56
68
|
coverage = "^7.3.3"
|
57
69
|
fastapi = "^0.112.1"
|
@@ -77,16 +89,3 @@ sphinx-rtd-theme = "^2.0.0"
|
|
77
89
|
toml = "^0.10.2"
|
78
90
|
toml-sort = "^0.23.1"
|
79
91
|
uvicorn = "^0.30.6"
|
80
|
-
|
81
|
-
[[tool.poetry.packages]]
|
82
|
-
include = "edsl"
|
83
|
-
|
84
|
-
[tool.tomlsort]
|
85
|
-
all = true
|
86
|
-
in_place = true
|
87
|
-
spaces_before_inline_comment = 2
|
88
|
-
spaces_indent_inline_array = 4
|
89
|
-
trailing_comma_inline_array = true
|
90
|
-
|
91
|
-
[tool.tomlsort.overrides."tool.poetry.dependencies"]
|
92
|
-
table_keys = false
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.1.36.dev1"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{edsl-0.1.36.dev1 → edsl-0.1.36.dev3}/edsl/inference_services/InferenceServicesCollection.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|