edsl 0.1.38__py3-none-any.whl → 0.1.38.dev2__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.
Files changed (53) hide show
  1. edsl/Base.py +31 -60
  2. edsl/__version__.py +1 -1
  3. edsl/agents/Agent.py +9 -18
  4. edsl/agents/AgentList.py +8 -59
  5. edsl/agents/Invigilator.py +7 -18
  6. edsl/agents/InvigilatorBase.py +19 -0
  7. edsl/agents/PromptConstructor.py +4 -5
  8. edsl/config.py +0 -8
  9. edsl/coop/coop.py +7 -74
  10. edsl/data/Cache.py +2 -27
  11. edsl/data/CacheEntry.py +3 -8
  12. edsl/data/RemoteCacheSync.py +19 -0
  13. edsl/enums.py +0 -2
  14. edsl/inference_services/GoogleService.py +15 -7
  15. edsl/inference_services/registry.py +0 -2
  16. edsl/jobs/Jobs.py +548 -88
  17. edsl/jobs/interviews/Interview.py +11 -11
  18. edsl/jobs/runners/JobsRunnerAsyncio.py +35 -140
  19. edsl/jobs/runners/JobsRunnerStatus.py +2 -0
  20. edsl/jobs/tasks/TaskHistory.py +16 -15
  21. edsl/language_models/LanguageModel.py +84 -44
  22. edsl/language_models/ModelList.py +1 -47
  23. edsl/language_models/registry.py +4 -57
  24. edsl/prompts/Prompt.py +3 -8
  25. edsl/questions/QuestionBase.py +16 -20
  26. edsl/questions/QuestionExtract.py +4 -3
  27. edsl/questions/question_registry.py +6 -36
  28. edsl/results/Dataset.py +15 -146
  29. edsl/results/DatasetExportMixin.py +217 -231
  30. edsl/results/DatasetTree.py +4 -134
  31. edsl/results/Result.py +9 -18
  32. edsl/results/Results.py +51 -145
  33. edsl/scenarios/FileStore.py +13 -187
  34. edsl/scenarios/Scenario.py +4 -61
  35. edsl/scenarios/ScenarioList.py +62 -237
  36. edsl/surveys/Survey.py +2 -16
  37. edsl/surveys/SurveyFlowVisualizationMixin.py +9 -67
  38. edsl/surveys/instructions/Instruction.py +0 -12
  39. edsl/templates/error_reporting/interview_details.html +3 -3
  40. edsl/templates/error_reporting/interviews.html +9 -18
  41. edsl/utilities/utilities.py +0 -15
  42. {edsl-0.1.38.dist-info → edsl-0.1.38.dev2.dist-info}/METADATA +1 -2
  43. {edsl-0.1.38.dist-info → edsl-0.1.38.dev2.dist-info}/RECORD +45 -53
  44. edsl/inference_services/PerplexityService.py +0 -163
  45. edsl/jobs/JobsChecks.py +0 -147
  46. edsl/jobs/JobsPrompts.py +0 -268
  47. edsl/jobs/JobsRemoteInferenceHandler.py +0 -239
  48. edsl/results/CSSParameterizer.py +0 -108
  49. edsl/results/TableDisplay.py +0 -198
  50. edsl/results/table_display.css +0 -78
  51. edsl/scenarios/ScenarioJoin.py +0 -127
  52. {edsl-0.1.38.dist-info → edsl-0.1.38.dev2.dist-info}/LICENSE +0 -0
  53. {edsl-0.1.38.dist-info → edsl-0.1.38.dev2.dist-info}/WHEEL +0 -0
@@ -1,13 +1,13 @@
1
- edsl/Base.py,sha256=HmleFvdP6tDwLfCKxyCdjRImGA2_blb0soE9GU7_crY,10200
1
+ edsl/Base.py,sha256=-dtcJ8lYlnyqiA8B0Vllv3KFB7us7GO_I_khPmQf484,9428
2
2
  edsl/BaseDiff.py,sha256=92BirXj2u3TEGHJWni9TBsvZjvq8wpb4wDL2vxX9Lb0,8253
3
3
  edsl/TemplateLoader.py,sha256=sDBlSMt7EfOduM7w3h6v03gvh_Rzn9hVrlS-iLSQdZA,849
4
4
  edsl/__init__.py,sha256=rAch7Qsj61LdstA_YeZROUhZkNls1HkpcJWodf6WtFk,1820
5
- edsl/__version__.py,sha256=iqMsqiw28paXOQhpmbrJrO6OnNN9YpR83VgJimFDq8k,23
6
- edsl/agents/Agent.py,sha256=cmO4jEsyTewu6fDC5geEtrtUtjcEFBga6_XmdLCqBb4,31985
7
- edsl/agents/AgentList.py,sha256=K_VdOnDfD4qPFq_Ms1jfSSKEM6q9BWMXEcBXhh4yVaY,13588
8
- edsl/agents/Invigilator.py,sha256=Yd2_rTwXH-6vzwJM2283CBN4UtNfblphltu73OMsEVk,9578
9
- edsl/agents/InvigilatorBase.py,sha256=5PKImpjDHMEHzeAqxTB_kBL8FKGmvfBGzZcW5vxl2Jc,9050
10
- edsl/agents/PromptConstructor.py,sha256=0YsUGlIzDUML57pN4TH6nMvfpxkQ5YRSOVZ9rIZxJt0,13714
5
+ edsl/__version__.py,sha256=GoXam3vPN_CfLeu8eCRBBa8n-392r6o48nwvlJgfzGs,28
6
+ edsl/agents/Agent.py,sha256=ovA5IKm8GIubqgVtyYdeTClkyU9bjmiAIBiwxnmKCRU,31677
7
+ edsl/agents/AgentList.py,sha256=D-RqPVtzcmmlAjwV8FuNGT-jfLBHypIm8yXwsWyRHAc,11980
8
+ edsl/agents/Invigilator.py,sha256=m4T-z4aNCGd4LKjLXVNI2VszYW-pQeScfcFAxkb0pWc,9080
9
+ edsl/agents/InvigilatorBase.py,sha256=2CLo-mOIWsLREUVz3Cy-MOCMNW6xURh4Lkha9gaddn8,9754
10
+ edsl/agents/PromptConstructor.py,sha256=Bp0AqjY0B6zqcI7Q-7X94pX_3mQXSx4KJ5aU5N0K1uY,13791
11
11
  edsl/agents/__init__.py,sha256=B1dWfV4QWOo8cc2KeuetdFGeNhZ8XHc0Q8YhQW9k7BE,136
12
12
  edsl/agents/descriptors.py,sha256=JxM_ckzhDmfZT1igSUdCxgyQcCK0o9MhU5jbLIned9g,3189
13
13
  edsl/agents/prompt_helpers.py,sha256=rHUxM_F0kCOkJmnhCyK-amFKViAYvpRRLD8LHFLGqQw,5023
@@ -23,7 +23,7 @@ edsl/auto/StageQuestions.py,sha256=TyUSnfeFEbuQKG_KZT9rk43flRt0ZyzQDqYzBa_858c,2
23
23
  edsl/auto/SurveyCreatorPipeline.py,sha256=b1rvJ1u_snPzdXIotfv_Zq3LV7OQVpIicudiFpny-S4,660
24
24
  edsl/auto/utilities.py,sha256=jNRccPq5e-Eya4dlLT6oa6WAYi45bSeQb8zRsD2e_IU,7608
25
25
  edsl/base/Base.py,sha256=dTXYSNcmNbkUVe6cv5kskJOmY1bbTRgQw0OGdtH_Dck,8534
26
- edsl/config.py,sha256=5sUX1O8paVAYroxVfTlnHFAi_S0uSX2H6JLPnK0s94c,6245
26
+ edsl/config.py,sha256=IfEm07QvhV5B2baNg6SrhME82BHBGwNZSLmYnx9ERxM,5875
27
27
  edsl/conversation/Conversation.py,sha256=GDGEq_2_ni1hEUM__2x2MBoaw4GZ1Nl5RqyvLiA5wzs,9589
28
28
  edsl/conversation/car_buying.py,sha256=Quh2Q8O9YoCyTKJUy3li376QFIOcL1gX0y89w3wlSl4,1950
29
29
  edsl/conversation/chips.py,sha256=IoWoWEdSfJqy_TRcPPjT73lhEmYgBrZ4_3kwHEHJijQ,3323
@@ -31,17 +31,17 @@ edsl/conversation/mug_negotiation.py,sha256=mjvAqErD4AjN3G2za2c-X-3axOShW-zAJUei
31
31
  edsl/conversation/next_speaker_utilities.py,sha256=bqr5JglCd6bdLc9IZ5zGOAsmN2F4ERiubSMYvZIG7qk,3629
32
32
  edsl/coop/PriceFetcher.py,sha256=pCCWBqFnSv8iYpgQKhAzVCdan1xTCNesZgmIB34N4HY,1770
33
33
  edsl/coop/__init__.py,sha256=4iZCwJSzJVyjBYk8ggGxY2kZjq9dXVT1jhyPDNyew4I,115
34
- edsl/coop/coop.py,sha256=oP3ECQAtz1oXVtgc490USJpGyxeOSOBdLrBUBJbkuX4,37057
34
+ edsl/coop/coop.py,sha256=KIhuI4Xm5KoyTL5CSn_Oygs1Eydmp_IZ3v6wF-4jUwI,34288
35
35
  edsl/coop/utils.py,sha256=UZwljKYW_Yjw7RYcjOg3SW7fn1pyHQfJ1fM48TBNoss,3601
36
- edsl/data/Cache.py,sha256=IyTj3eV9limmRTMBgdJ2XWLSEph_1SHxkaIcBhHbARU,17555
37
- edsl/data/CacheEntry.py,sha256=qsry0YYmdEwJC6KiWeq9_ceQXpaRlKzwy46R7vP6DBk,7485
36
+ edsl/data/Cache.py,sha256=fL1yWljFFfcEUqzeNbo3YSDMa4R0O7fFGxcrFQHWuKA,16711
37
+ edsl/data/CacheEntry.py,sha256=_5UiFaJQu_U-Z1_lEPt-h6Gaidp2Eunk02wOd3Ni3MQ,7252
38
38
  edsl/data/CacheHandler.py,sha256=DxbfeT2nZGRu8yQkbWr2tyEnhNiClevMsd5KZMCq2f0,4793
39
- edsl/data/RemoteCacheSync.py,sha256=qA2RymUcnhM2-g8PuzzaD99zQnb0zNUr9OQ0TlOFz-M,2878
39
+ edsl/data/RemoteCacheSync.py,sha256=is3j644YAZDPCt4bMxOZpXtJkCXLs_hoKukxQosKKXM,3628
40
40
  edsl/data/SQLiteDict.py,sha256=V5Nfnxctgh4Iblqcw1KmbnkjtfmWrrombROSQ3mvg6A,8979
41
41
  edsl/data/__init__.py,sha256=KBNGGEuGHq--D-TlpAQmvv_If906dJc1Gsy028zOx78,170
42
42
  edsl/data/orm.py,sha256=Jz6rvw5SrlxwysTL0QI9r68EflKxeEBmf6j6himHDS8,238
43
43
  edsl/data_transfer_models.py,sha256=9LsvZNMvyEEkF-DIcEUA9iomFbxG7E6nRUqsbHoB03k,1951
44
- edsl/enums.py,sha256=adsZKcsKLr5ZHu2nJVtR_nVH_40pMGQP1IEWoOuIMrs,5342
44
+ edsl/enums.py,sha256=Z6nhaP8p3z0UJSfsCGb6VQUtGUKw3AK6yC0UDwOi05c,5247
45
45
  edsl/exceptions/BaseException.py,sha256=eP30DOYtssbKt0qarfDkNOKDW-aG0DLaHtx42bp5dVQ,811
46
46
  edsl/exceptions/__init__.py,sha256=zuztBvLpOCvnKtKDbnqcZ8qPKW_1OEFMSMjOgLHUP_M,1432
47
47
  edsl/exceptions/agents.py,sha256=kjn30zF1AemM2k4j3YgBDW7wW-U-Ghms-wkb1qQHUYg,1346
@@ -61,31 +61,27 @@ edsl/inference_services/AnthropicService.py,sha256=6kE8miYIsCZ6B-da4LMHE3tUkyNAs
61
61
  edsl/inference_services/AwsBedrock.py,sha256=Ma1Xt8DEgOtHTmKfjuWbXLypjDHEEYaVp0h7xiN33OM,4073
62
62
  edsl/inference_services/AzureAI.py,sha256=Xd3r4Y5OQReW-hG67ymK3LSDLiHj5hMFuvGEz5DI3lY,8889
63
63
  edsl/inference_services/DeepInfraService.py,sha256=fWlH5sCNxf8eHPHxPPxJMEVWpCM9sDenkC8IZYqtXfA,515
64
- edsl/inference_services/GoogleService.py,sha256=k8vJEZ6LxFbr2JVCQFt2BtHNr9PAJwjOYmM3_Gp8mlo,5100
64
+ edsl/inference_services/GoogleService.py,sha256=CeyQ2Db_cCFOIVvetSwsFLqenJFrg4EGoRYwIe7-7-U,5422
65
65
  edsl/inference_services/GroqService.py,sha256=eDMq8d7YAlJ2689ywaoaPGvMgFfOiX1KYlF_vr97N6I,510
66
66
  edsl/inference_services/InferenceServiceABC.py,sha256=Js_XFM4678C0NrTXbmSKLyIsiNzye55gOoz2-FyiC7E,4694
67
67
  edsl/inference_services/InferenceServicesCollection.py,sha256=uNTzNAfqRR5fL609KV3ZMyXxjfvZpj1PBz4QWme-lBY,3739
68
68
  edsl/inference_services/MistralAIService.py,sha256=7mUsBEZdEWIjfh4qMNemTT2xYMq7k0yuMLGtDTdfp4Y,3878
69
69
  edsl/inference_services/OllamaService.py,sha256=oro9CRl8IUE2Ro-zE69Cr4Zaf6Gdw29XW5CFU-46E0k,498
70
70
  edsl/inference_services/OpenAIService.py,sha256=wraTu62bZojmgAXHNG6pJMMPZiyO1pSDfY73LVaBR_I,7621
71
- edsl/inference_services/PerplexityService.py,sha256=mlo5vpJjOXWORV17bGt9lKUGfNR8OXTeswQBUzmSU-Q,5730
72
71
  edsl/inference_services/TestService.py,sha256=-jTXkl_qLt1k8gJjRb0SMgTb9EY-XMTP-ZUL9AJcUCA,3009
73
72
  edsl/inference_services/TogetherAIService.py,sha256=p_31ccrfN25kZF2xlAlUkb7w1EL4lGjmkSv-5qZ7TtY,6301
74
73
  edsl/inference_services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
74
  edsl/inference_services/models_available_cache.py,sha256=bOvevfRn2HlmBcHalaDkjFLxiw0JJhsXVUHZo_OhgjA,4061
76
75
  edsl/inference_services/rate_limits_cache.py,sha256=HYslviz7mxF9U4CUTPAkoyBsiXjSju-YCp4HHir6e34,1398
77
- edsl/inference_services/registry.py,sha256=Rkjfe4iABQc7aiY73bGnbRAgLXY0osni22hYnmMEI2c,1335
76
+ edsl/inference_services/registry.py,sha256=Fn6va65MqD9lnFvT603ZnU7Ok8IW64M2MzOH57kf9-A,1240
78
77
  edsl/inference_services/write_available.py,sha256=NNwhATlaMp8IYY635MSx-oYxt5X15acjAfaqYCo_I1Y,285
79
78
  edsl/jobs/Answers.py,sha256=c4LpigQjdnMr7iJu8571C4FggGPVudfT7hbJgmgKW40,1821
80
- edsl/jobs/Jobs.py,sha256=QztGWk8MuGi0zuNREJNqKO66SEa8T15nIE8hBSv1eIc,32785
81
- edsl/jobs/JobsChecks.py,sha256=rMXPHJ6_Qvs_P8ebvHFVkvJw47xiMCIfah8FxiOceYA,4450
82
- edsl/jobs/JobsPrompts.py,sha256=nnEVi2z3M-5MR6K28TatWFj6zBY-1KpYoqr0Qx3EqVQ,9681
83
- edsl/jobs/JobsRemoteInferenceHandler.py,sha256=0bFQcvybhyKpwXocUYZKM803_YJtJOryID5CatI-zLU,9045
79
+ edsl/jobs/Jobs.py,sha256=Cy27HrLDM4YI5kYG7K61Xd0N7DdSIAT2tRXJqMToq5w,49616
84
80
  edsl/jobs/__init__.py,sha256=aKuAyd_GoalGj-k7djOoVwEbFUE2XLPlikXaA1_8yAg,32
85
81
  edsl/jobs/buckets/BucketCollection.py,sha256=11CRisE1WAPcAlI3YJK3DVvu0AqSvv8KskXo4Q1waSk,2286
86
82
  edsl/jobs/buckets/ModelBuckets.py,sha256=hxw_tzc0V42CiB7mh5jIxlgwDVJ-zFZhlLtKrHEg8ho,2419
87
83
  edsl/jobs/buckets/TokenBucket.py,sha256=VRnbMkjnYc7ed1EQYMK3OnIL2CFYZNFywmLKrkyBSfw,9166
88
- edsl/jobs/interviews/Interview.py,sha256=g63o7Wwh_C6MkOkL4tqRN_wyJtb9lELu19D_6dkLEgU,26159
84
+ edsl/jobs/interviews/Interview.py,sha256=da2QlX_YSGrgf1yl7BJ0wt755iZu9eHGPlGeZzxaf94,26177
89
85
  edsl/jobs/interviews/InterviewExceptionCollection.py,sha256=ZIe9nnI8pznxp1D0K2Ii9SHorc9-f0k_lQV-Giq41P8,3666
90
86
  edsl/jobs/interviews/InterviewExceptionEntry.py,sha256=JMLcftRItQRCo8cOWH5S2H02wa-157l1TCFGVDXfViY,5685
91
87
  edsl/jobs/interviews/InterviewStatistic.py,sha256=hY5d2EkIJ96NilPpZAvZZzZoxLXM7ss3xx5MIcKtTPs,1856
@@ -94,38 +90,38 @@ edsl/jobs/interviews/InterviewStatusDictionary.py,sha256=MSyys4hOWe1d8gfsUvAPbcK
94
90
  edsl/jobs/interviews/InterviewStatusLog.py,sha256=6u0F8gf5tha39VQL-IK_QPkCsQAYVOx_IesX7TDDX_A,3252
95
91
  edsl/jobs/interviews/ReportErrors.py,sha256=xmzppVqNI93-NjL-BCBOBgBFkU3tuBJiw-FHYKeWDlY,1783
96
92
  edsl/jobs/interviews/interview_status_enum.py,sha256=KJ-1yLAHdX-p8TiFnM0M3v1tnBwkq4aMCuBX6-ytrI8,229
97
- edsl/jobs/runners/JobsRunnerAsyncio.py,sha256=ZzhFytQ4hqQWs65I0krzz909Hlks9Z202Vx8X2TJzRM,18135
98
- edsl/jobs/runners/JobsRunnerStatus.py,sha256=XoUGd5Y501JSo98NRvqbP9aV9Ye01HVxI65UcMXmAzs,11007
93
+ edsl/jobs/runners/JobsRunnerAsyncio.py,sha256=veRmC7z8kelvDLR7cTUTEC01wY_OKUGt_Iw7Qsvk9iI,13599
94
+ edsl/jobs/runners/JobsRunnerStatus.py,sha256=tTlAigbXfcx-h-sy2L1H5JY4jZYwLtFamaUbgfPErls,11009
99
95
  edsl/jobs/runners/JobsRunnerStatusData.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
96
  edsl/jobs/tasks/QuestionTaskCreator.py,sha256=K-xATHIXMWPTMOnms5UDW30eTIlIfebf7oOEfwrh1ME,10072
101
97
  edsl/jobs/tasks/TaskCreators.py,sha256=XqAbNU33378Z4PQncokbfJwnKt3KHR9aqa5fKYRDpfg,2694
102
- edsl/jobs/tasks/TaskHistory.py,sha256=61cdzs3A4OldBz_UWsLJIpRFPPA3yG45RSkVkOQrwxQ,14970
98
+ edsl/jobs/tasks/TaskHistory.py,sha256=Dbb752QJOD9AKKL1vd2umAgE7l9rS_cS24SR9k84Ldg,15150
103
99
  edsl/jobs/tasks/TaskStatusLog.py,sha256=bqH36a32F12fjX-M-4lNOhHaK2-WLFzKE-r0PxZPRjI,546
104
100
  edsl/jobs/tasks/task_status_enum.py,sha256=DOyrz61YlIS8R1W7izJNphcLrJ7I_ReUlfdRmk23h0Q,5333
105
101
  edsl/jobs/tokens/InterviewTokenUsage.py,sha256=u_6-IHpGFwZ6qMEXr24-jyLVUSSp4dSs_4iAZsBv7O4,1100
106
102
  edsl/jobs/tokens/TokenUsage.py,sha256=odj2-wDNEbHl9noyFAQ0DSKV0D9cv3aDOpmXufKZ8O4,1323
107
103
  edsl/language_models/KeyLookup.py,sha256=4ZTpm7rK20wm4ljqyQDu6c5DF9CUhKxtp1GVL1XFkFA,1051
108
- edsl/language_models/LanguageModel.py,sha256=qSIP2ekLnrnTRfTIHyTDf2XYLK1rQM0NwmL9ItHwDw0,23771
109
- edsl/language_models/ModelList.py,sha256=buK4mCQyt4owmEa8foWg9a7WQZFg_zFJ90Uv0mbP8YY,4375
104
+ edsl/language_models/LanguageModel.py,sha256=Ej9Zs8aCGY0HhYRnGMwvyV062yusHWx7OkGi9J-VSyk,24804
105
+ edsl/language_models/ModelList.py,sha256=6PyaALDVVNomE19GNXOrvskffyu212gsPTe5LH0z8Ns,3020
110
106
  edsl/language_models/RegisterLanguageModelsMeta.py,sha256=eMtBSAnlRnC4c-0_o2QkSNyzv-uAce4BEGMXq2PLj2E,7523
111
107
  edsl/language_models/__init__.py,sha256=f38OP_aBJde_NjNDxwDGs3_2Bu-A17NMZ47pvnhMEkg,162
112
108
  edsl/language_models/fake_openai_call.py,sha256=dxbL5e4NLF-eTk9IduPyGwLiVCX_-eGCJDaLYPlQTqc,364
113
109
  edsl/language_models/fake_openai_service.py,sha256=2AAsAinELbMZRqiepwBkWhWcLuMe5ORXUBNarrdl1ug,1714
114
- edsl/language_models/registry.py,sha256=qj2hiMLkm3OIzlD_FDh-D6MoQH_FPRvy38uTWp46AsI,6072
110
+ edsl/language_models/registry.py,sha256=hfOlKbTkXrXGpZHQQPKE9uyyUCgOxoUyyIaKL2kf53U,4369
115
111
  edsl/language_models/repair.py,sha256=d0i2S3kJfX7JtuCYhlIyT0QP8hcZkRPLanC09lOW_xo,5353
116
112
  edsl/language_models/unused/ReplicateBase.py,sha256=J1oqf7mEyyKhRwNUomnptVqAsVFYCbS3iTW0EXpKtXo,3331
117
113
  edsl/language_models/utilities.py,sha256=GWON2ahCpB-_-hhqmQ5Yi7_rKB4cd8GlucWuq6EnGZQ,2280
118
114
  edsl/notebooks/Notebook.py,sha256=YAFLc9p8HMaHq9ZemB5aKRBg-evZ6b4U9W00ds0N2VU,7797
119
115
  edsl/notebooks/__init__.py,sha256=VNUA3nNq04slWNbYaNrzOhQJu3AZANpvBniyCJSzJ7U,45
120
- edsl/prompts/Prompt.py,sha256=a1OFyfAWhZsvcuMGfIqQ3Sz82d5LSoICMjtpkuKAPss,11666
116
+ edsl/prompts/Prompt.py,sha256=IfaHS6esguvSDkYtT3oVYQBBVUqGBo9diyZ_MwEQb3U,11433
121
117
  edsl/prompts/__init__.py,sha256=wrtkH7JW72U93_pnmTvqQx_NoadH5OPRNfrZ5AaD7Co,87
122
118
  edsl/questions/AnswerValidatorMixin.py,sha256=t_ABep50KP02GSc48Y8VAEjp35drVOngfrWXU5aVhgk,11505
123
- edsl/questions/QuestionBase.py,sha256=3beTv65WO8-mgqdOvOn6SXCkQYMpDZk65BRl9d0__KM,22509
119
+ edsl/questions/QuestionBase.py,sha256=4uniwMIFNO8eKt3UA6LBmled6TN2nzEVdlkQ6ZUmsN8,22456
124
120
  edsl/questions/QuestionBaseGenMixin.py,sha256=4WxPuoPRl_b_sPFLJ9KdfPuoYm2_ogkDTVfdD7vLOng,6038
125
121
  edsl/questions/QuestionBasePromptsMixin.py,sha256=lCnC5Uvk-BJNiuy05BL9v9Qn89yyoq5BqH2zb0DHeSs,7837
126
122
  edsl/questions/QuestionBudget.py,sha256=TJgPsyqafJdJw5if0zVxh7zHloourINUqUWfWIlRq9Y,8131
127
123
  edsl/questions/QuestionCheckBox.py,sha256=wC_doEdNZi4y8Uz-tXZyQ2GYS5wQKOWhbVUnyVLoACU,12840
128
- edsl/questions/QuestionExtract.py,sha256=gI3iZQq-j9Ltvm6OHgUEz3WHeBPfOXEbfLZApyc3JI0,6023
124
+ edsl/questions/QuestionExtract.py,sha256=PlXwMeZgPAFBXIHSXpFMYTToag-HwA9C7u6-Z3bQMek,6103
129
125
  edsl/questions/QuestionFreeText.py,sha256=NSdPWpTkbBpAKmyN8eS0g2ogOOjWMjWFGYvY2jrsWag,3423
130
126
  edsl/questions/QuestionFunctional.py,sha256=APuTZ5QNBTLvwv_iNcgFFV81qImiUL3qHMMHjArREf0,5581
131
127
  edsl/questions/QuestionList.py,sha256=vs2AE8OnbwVsly-sorb9dfIibdF1BpOaCRYyvwXYSzY,7209
@@ -153,7 +149,7 @@ edsl/questions/prompt_templates/question_linear_scale.jinja,sha256=VB9bFPeLGGb5a
153
149
  edsl/questions/prompt_templates/question_list.jinja,sha256=MAkNv88E79jXK9TxKdnf5KgA77CWz9vXc2TZm2r-g-A,495
154
150
  edsl/questions/prompt_templates/question_multiple_choice.jinja,sha256=sSyAhnexZF6oWqHL-45r7o69vrFcCbbYXLZ3zu7q76U,761
155
151
  edsl/questions/prompt_templates/question_numerical.jinja,sha256=c20sp3HfFonfaRwwmnF7HjAEugU15QlgpNAIkNHasl0,1218
156
- edsl/questions/question_registry.py,sha256=ggPAjW2XJ-rFA_2bitxJV7SVlEx_QLYNib9geFXjhKw,6334
152
+ edsl/questions/question_registry.py,sha256=sDr909j6jEulK_uXPuvgvYVytPsrpZz_eqKvG0rsbMo,5365
157
153
  edsl/questions/settings.py,sha256=er_z0ZW_dgmC5CHLWkaqBJiuWgAYzIund85M5YZFQAI,291
158
154
  edsl/questions/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
159
155
  edsl/questions/templates/budget/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -193,27 +189,23 @@ edsl/questions/templates/top_k/question_presentation.jinja,sha256=2u8XIkFPWzOuhb
193
189
  edsl/questions/templates/yes_no/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
194
190
  edsl/questions/templates/yes_no/answering_instructions.jinja,sha256=UAcssfcYeW8zytmPOVJOVQEdwdvlRspE8WnatYvreJQ,172
195
191
  edsl/questions/templates/yes_no/question_presentation.jinja,sha256=hoEVj4GQD3EYnR2AStXkMFOJeqISNoEVzBd8-cx2yWg,273
196
- edsl/results/CSSParameterizer.py,sha256=1gIV1q7647FUsEcwExuWPyymn-KT5aFV2cGltXzQJP4,3675
197
- edsl/results/Dataset.py,sha256=S349g21y5xgt2XD2Ttw2LJXVGwV5wiOr1nBAkF76NvM,14427
198
- edsl/results/DatasetExportMixin.py,sha256=6KngdS-UbK_sDNPEEwd_peUvdPljxAYkBHPNs-XGyfg,27487
199
- edsl/results/DatasetTree.py,sha256=jKn1ZRjjt-fEosXWCzz48LVABPyioSRH3An2hSAFhoc,9471
200
- edsl/results/Result.py,sha256=hsPEqZ-nX3kd6FFmE1CQHTziq11Rj7R9reBdv-VJ3Go,16849
201
- edsl/results/Results.py,sha256=qMr0IjjyR1F7uV-OsqN2HoIehqUd9fHqb87U82s7x-w,40264
192
+ edsl/results/Dataset.py,sha256=udJvOr9ePfD5xfy5k2zaNNWr4Qg_yp5s_f1YKEcVtKc,9547
193
+ edsl/results/DatasetExportMixin.py,sha256=c0fHbx6DyE54CCoI4I2QuWqTzmaM8LiGrMjyz-hBzMQ,26688
194
+ edsl/results/DatasetTree.py,sha256=nwEgnWBqRXUxagSCEgqwikmIo8ztUxaF-QH-m-8myyQ,4985
195
+ edsl/results/Result.py,sha256=4K1L01ORYZvZKAFpqH0bBP_XuSkiGcIi2TUci1ZJS0o,16524
196
+ edsl/results/Results.py,sha256=Llr6w3iMMGqc-nRjTS00CtIj9T1Q9F4thzj6kkaYbOo,37753
202
197
  edsl/results/ResultsDBMixin.py,sha256=oh1QXKwreSx90PBJyjYsQ7WrLXdNqbe4QULy25Nq7dk,7945
203
198
  edsl/results/ResultsExportMixin.py,sha256=XizBsPNxziyffirMA4kS7UHpYM1WIE4s1K-B7TqTfDw,1266
204
199
  edsl/results/ResultsFetchMixin.py,sha256=VEa0TKDcXbnTinSKs9YaE4WjOSLmlp9Po1_9kklFvSo,848
205
200
  edsl/results/ResultsGGMixin.py,sha256=SAYz8p4wb1g8x6KhBVz9NHOGib2c2XsqtTclpADrFeM,4344
206
201
  edsl/results/ResultsToolsMixin.py,sha256=mseEFxJCf9sjXdIxpjITt_UZBwdXxw2o2VLg5jMrALA,3017
207
202
  edsl/results/Selector.py,sha256=WMRVBCwLuQ4ljVzqnZxGKIwqPEL_waK-FqaMY4__ob0,4847
208
- edsl/results/TableDisplay.py,sha256=pA9VTBcwVasruustj-_xx1XYRU484EqWDDb9RZYVH3Y,6453
209
203
  edsl/results/__init__.py,sha256=2YcyiVtXi-3vIV0ZzOy1PqBLm2gaziufJVi4fdNrAt8,80
210
- edsl/results/table_display.css,sha256=d9HuZYpGvgpDItjYYB0SI88qEPZ4pLgxbhzty_o5DoY,2106
211
204
  edsl/results/tree_explore.py,sha256=hQjiO4E71rIOPDgEHgK8T8ukxqoNdgX_tvyiDlG4_9U,4624
212
- edsl/scenarios/FileStore.py,sha256=nsFQ9VLjlilzHRXj3KARN8vvR47vfAAm1y9Ww0ZL2uk,19724
213
- edsl/scenarios/Scenario.py,sha256=RKb38Q13vTqc31qoNFW9hmljBtWHIrQUO5IMblygN5U,20146
205
+ edsl/scenarios/FileStore.py,sha256=6XeRxYJmxlAWDiVozlO0hINChgECyPTpMjJskAltFzg,14260
206
+ edsl/scenarios/Scenario.py,sha256=GP2dkdU_IXZPxV0HxCNn0GHyC9-rXUjAsdSMh2kvDP0,18601
214
207
  edsl/scenarios/ScenarioHtmlMixin.py,sha256=yKAhYTjR600od8l2KJDaTiz-FC0ppyRzOwNOWO0zxN8,2086
215
- edsl/scenarios/ScenarioJoin.py,sha256=4wa4JGnwrF-u2nTfaVkzLTuB6PftfvTkm5UDWvCVFyk,4774
216
- edsl/scenarios/ScenarioList.py,sha256=RRnAI2UsAfFBChI44_T93RXpRfbUEzhXTUq037clEZg,49151
208
+ edsl/scenarios/ScenarioList.py,sha256=d-UPxsveu3bLYtd1dRnQJjCrHMu9VwOrikhD_lslFFQ,41439
217
209
  edsl/scenarios/ScenarioListExportMixin.py,sha256=wfffY9xy_1QyIM-1xnisr64izSLjmyuotUYY5iDLodc,1681
218
210
  edsl/scenarios/ScenarioListPdfMixin.py,sha256=z_H2sZn5SCSq6nRLSU5jefaOlh4sqJLyOY_Ld0XCR18,8332
219
211
  edsl/scenarios/__init__.py,sha256=1X03GA_ltVRzNT5KQIuATj3qBcpFCvvGWojr3wggGtk,148
@@ -228,24 +220,24 @@ edsl/surveys/Memory.py,sha256=-ikOtkkQldGB_BkPCW3o7AYwV5B_pIwlREw7aVCSHaQ,1113
228
220
  edsl/surveys/MemoryPlan.py,sha256=9NNue5Z1FQs-H7yz0kFFDc6yTqJGN9pDcmeY15h3SLY,9052
229
221
  edsl/surveys/Rule.py,sha256=Vy0NX7E5V1CmXJS5DhUb8iMJRD8EDHVr8HPD6KCGYt4,12393
230
222
  edsl/surveys/RuleCollection.py,sha256=ID8EN1qAwKcCJz7jMEwh9cF0fHc-O2R8Vi3V_59UNys,14894
231
- edsl/surveys/Survey.py,sha256=thP3lnmIYpCEo7qd6Jk6qITXfQtKDcNrZsdulAwkjqI,73498
223
+ edsl/surveys/Survey.py,sha256=1TiACeQYVBt-YVboJlbQ6lN76CGUI1mSONVOAh8hkiE,72935
232
224
  edsl/surveys/SurveyCSS.py,sha256=NjJezs2sTlgFprN6IukjGKwNYmNdXnLjzV2w5K4z4RI,8415
233
225
  edsl/surveys/SurveyExportMixin.py,sha256=Kvkd2ku2Kemsn2Nw-Yt8GTnGFcUqfEiKznmisAeO7ck,8339
234
- edsl/surveys/SurveyFlowVisualizationMixin.py,sha256=QpqqKEzgNo90wh-S4eFco8CWpZZ3x062Zc2vk6U4gLw,6356
226
+ edsl/surveys/SurveyFlowVisualizationMixin.py,sha256=dEG_f-L0ZAyWU5Ta584IX5GZurjVt1tbIISo5z61Jvg,4004
235
227
  edsl/surveys/SurveyQualtricsImport.py,sha256=SSZv53D1zVhQSfSw-X0_cte0QnkWhE9v922wLn6RMkI,9771
236
228
  edsl/surveys/__init__.py,sha256=vjMYVlP95fHVqqw2FfKXRuYbTArZkZr1nK4FnXzZWzs,129
237
229
  edsl/surveys/base.py,sha256=XJHGEbbsH6hlYYkmI4isVLD8guLz8BdhR-eQRL78mc4,1115
238
230
  edsl/surveys/descriptors.py,sha256=3B-hBVvGpLlVBCyOnPuxkLjesvpr0QIuATbggp_MJ7o,2076
239
231
  edsl/surveys/instructions/ChangeInstruction.py,sha256=3zwis7DFKA5XYBt1291Rgcm8EEcH1Tp9rfhYYUDOAMQ,1364
240
- edsl/surveys/instructions/Instruction.py,sha256=Bo98pcaYF_srLS2FL9myVYAcTjSefeneCKVw-EPq6wA,1908
232
+ edsl/surveys/instructions/Instruction.py,sha256=o85HttLF0-uRhHhZ_67rkPxiF8rlcjuFSEL5MFAoMsM,1496
241
233
  edsl/surveys/instructions/InstructionCollection.py,sha256=eO-i9zgbk8q0D8hnawDrioS-iqXOEE7eKm5cgYNgwrU,2931
242
234
  edsl/surveys/instructions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
243
235
  edsl/templates/error_reporting/base.html,sha256=IkV24ZaUCNX303ZqVTWkFsJOnu5BG_SULrKN2YejUxQ,552
244
236
  edsl/templates/error_reporting/exceptions_by_model.html,sha256=7uAWGfhUMey-29Vh6YkN_Qx1lfhC92fsTMxJEVXWPDs,792
245
237
  edsl/templates/error_reporting/exceptions_by_question_name.html,sha256=_q6hSwtO_WhjXLZNLZhRj-qbPzStqYSzT0iECKUAFlg,454
246
238
  edsl/templates/error_reporting/exceptions_by_type.html,sha256=TVsNCAz_G53LSZ-YslM51TUsbwtw7wzCqPwVYO6TVEw,415
247
- edsl/templates/error_reporting/interview_details.html,sha256=TSfbfNsvteZnR0rhHHn2MYDHWjlbzOHmuZS1GowKgv0,4034
248
- edsl/templates/error_reporting/interviews.html,sha256=x-hD7A0_PIM_8-wDx0SaPlukBe7v338tprZ-qjEt6n0,661
239
+ edsl/templates/error_reporting/interview_details.html,sha256=_3AZfDu7ZOrZZPQAE-odcSRkv7QuOPZQTsiK97MDY6g,4043
240
+ edsl/templates/error_reporting/interviews.html,sha256=jaPrrtUGs8Rs26H3k1QLqNRpIGAZEWrJR4OF83gDCj8,393
249
241
  edsl/templates/error_reporting/overview.html,sha256=1oTYQpi03OnguG-iudO8FZC7mwR6GryeslDbl0w9ksw,405
250
242
  edsl/templates/error_reporting/performance_plot.html,sha256=NTXFj51VEwew59gLzbR83Lybh88WmFR-fhxm5rmz0Ms,53
251
243
  edsl/templates/error_reporting/report.css,sha256=e0kM4z4fF3xrKIJbbhvrzzh8gMJ8LD7rDu0ut63kg8c,1209
@@ -270,8 +262,8 @@ edsl/utilities/interface.py,sha256=AaKpWiwWBwP2swNXmnFlIf3ZFsjfsR5bjXQAW47tD-8,1
270
262
  edsl/utilities/naming_utilities.py,sha256=ZIxEe8nX0ZCpcZ14QjnnxBxQ0UBSiNZp6RqC7-gvUCw,4966
271
263
  edsl/utilities/repair_functions.py,sha256=tftmklAqam6LOQQu_-9U44N-llycffhW8LfO63vBmNw,929
272
264
  edsl/utilities/restricted_python.py,sha256=5-_zUhrNbos7pLhDl9nr8d24auRlquR6w-vKkmNjPiA,2060
273
- edsl/utilities/utilities.py,sha256=8VCm6A2ktKhTUPFYEY37kTxaHl3p-xAUeAwnBJLlEAU,12263
274
- edsl-0.1.38.dist-info/LICENSE,sha256=_qszBDs8KHShVYcYzdMz3HNMtH-fKN_p5zjoVAVumFc,1111
275
- edsl-0.1.38.dist-info/METADATA,sha256=hlKsfwKH4Skfeu0-geJIh39g2P2vwWX0zyq-XQ4Pmo4,4513
276
- edsl-0.1.38.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
277
- edsl-0.1.38.dist-info/RECORD,,
265
+ edsl/utilities/utilities.py,sha256=bvi3uSj6HNB9IzjD4_UoRw7o9UAd2WWYXPXbHDVmFP8,11857
266
+ edsl-0.1.38.dev2.dist-info/LICENSE,sha256=_qszBDs8KHShVYcYzdMz3HNMtH-fKN_p5zjoVAVumFc,1111
267
+ edsl-0.1.38.dev2.dist-info/METADATA,sha256=fnaAGvZvnVS9ObcZsfrRQbpUxWsAxYj_XXxLsGrHZdU,4476
268
+ edsl-0.1.38.dev2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
269
+ edsl-0.1.38.dev2.dist-info/RECORD,,
@@ -1,163 +0,0 @@
1
- import aiohttp
2
- import json
3
- import requests
4
- from typing import Any, List, Optional
5
- from edsl.inference_services.rate_limits_cache import rate_limits
6
-
7
- # from edsl.inference_services.InferenceServiceABC import InferenceServiceABC
8
- from edsl.language_models import LanguageModel
9
-
10
- from edsl.inference_services.OpenAIService import OpenAIService
11
-
12
-
13
- class PerplexityService(OpenAIService):
14
- """Perplexity service class."""
15
-
16
- _inference_service_ = "perplexity"
17
- _env_key_name_ = "PERPLEXITY_API_KEY"
18
- _base_url_ = "https://api.perplexity.ai"
19
- _models_list_cache: List[str] = []
20
- # default perplexity parameters
21
- _parameters_ = {
22
- "temperature": 0.5,
23
- "max_tokens": 1000,
24
- "top_p": 1,
25
- "logprobs": False,
26
- "top_logprobs": 3,
27
- }
28
-
29
- @classmethod
30
- def available(cls) -> List[str]:
31
- return [
32
- "llama-3.1-sonar-huge-128k-online",
33
- "llama-3.1-sonar-large-128k-online",
34
- "llama-3.1-sonar-small-128k-online",
35
- ]
36
-
37
- @classmethod
38
- def create_model(
39
- cls, model_name="llama-3.1-sonar-large-128k-online", model_class_name=None
40
- ) -> LanguageModel:
41
- if model_class_name is None:
42
- model_class_name = cls.to_class_name(model_name)
43
-
44
- class LLM(LanguageModel):
45
- """
46
- Child class of LanguageModel for interacting with Perplexity models
47
- """
48
-
49
- key_sequence = cls.key_sequence
50
- usage_sequence = cls.usage_sequence
51
- input_token_name = cls.input_token_name
52
- output_token_name = cls.output_token_name
53
-
54
- _rpm = cls.get_rpm(cls)
55
- _tpm = cls.get_tpm(cls)
56
-
57
- _inference_service_ = cls._inference_service_
58
- _model_ = model_name
59
-
60
- _parameters_ = {
61
- "temperature": 0.5,
62
- "max_tokens": 1000,
63
- "top_p": 1,
64
- "frequency_penalty": 1,
65
- "presence_penalty": 0,
66
- # "logprobs": False, # Enable this returns 'Neither or both of logprobs and top_logprobs must be set.
67
- # "top_logprobs": 3,
68
- }
69
-
70
- def sync_client(self):
71
- return cls.sync_client()
72
-
73
- def async_client(self):
74
- return cls.async_client()
75
-
76
- @classmethod
77
- def available(cls) -> list[str]:
78
- return cls.sync_client().models.list()
79
-
80
- def get_headers(self) -> dict[str, Any]:
81
- client = self.sync_client()
82
- response = client.chat.completions.with_raw_response.create(
83
- messages=[
84
- {
85
- "role": "user",
86
- "content": "Say this is a test",
87
- }
88
- ],
89
- model=self.model,
90
- )
91
- return dict(response.headers)
92
-
93
- def get_rate_limits(self) -> dict[str, Any]:
94
- try:
95
- if "openai" in rate_limits:
96
- headers = rate_limits["openai"]
97
-
98
- else:
99
- headers = self.get_headers()
100
-
101
- except Exception as e:
102
- return {
103
- "rpm": 10_000,
104
- "tpm": 2_000_000,
105
- }
106
- else:
107
- return {
108
- "rpm": int(headers["x-ratelimit-limit-requests"]),
109
- "tpm": int(headers["x-ratelimit-limit-tokens"]),
110
- }
111
-
112
- async def async_execute_model_call(
113
- self,
114
- user_prompt: str,
115
- system_prompt: str = "",
116
- files_list: Optional[List["Files"]] = None,
117
- invigilator: Optional[
118
- "InvigilatorAI"
119
- ] = None, # TBD - can eventually be used for function-calling
120
- ) -> dict[str, Any]:
121
- """Calls the OpenAI API and returns the API response."""
122
- if files_list:
123
- encoded_image = files_list[0].base64_string
124
- content = [{"type": "text", "text": user_prompt}]
125
- content.append(
126
- {
127
- "type": "image_url",
128
- "image_url": {
129
- "url": f"data:image/jpeg;base64,{encoded_image}"
130
- },
131
- }
132
- )
133
- else:
134
- content = user_prompt
135
- client = self.async_client()
136
-
137
- messages = [
138
- {"role": "system", "content": system_prompt},
139
- {"role": "user", "content": content},
140
- ]
141
- if system_prompt == "" and self.omit_system_prompt_if_empty:
142
- messages = messages[1:]
143
-
144
- params = {
145
- "model": self.model,
146
- "messages": messages,
147
- "temperature": self.temperature,
148
- "max_tokens": self.max_tokens,
149
- "top_p": self.top_p,
150
- "frequency_penalty": self.frequency_penalty,
151
- "presence_penalty": self.presence_penalty,
152
- # "logprobs": self.logprobs,
153
- # "top_logprobs": self.top_logprobs if self.logprobs else None,
154
- }
155
- try:
156
- response = await client.chat.completions.create(**params)
157
- except Exception as e:
158
- print(e, flush=True)
159
- return response.model_dump()
160
-
161
- LLM.__name__ = "LanguageModel"
162
-
163
- return LLM
edsl/jobs/JobsChecks.py DELETED
@@ -1,147 +0,0 @@
1
- import os
2
- from edsl.exceptions import MissingAPIKeyError
3
-
4
-
5
- class JobsChecks:
6
- def __init__(self, jobs):
7
- """ """
8
- self.jobs = jobs
9
-
10
- def check_api_keys(self) -> None:
11
- from edsl import Model
12
-
13
- for model in self.jobs.models + [Model()]:
14
- if not model.has_valid_api_key():
15
- raise MissingAPIKeyError(
16
- model_name=str(model.model),
17
- inference_service=model._inference_service_,
18
- )
19
-
20
- def get_missing_api_keys(self) -> set:
21
- """
22
- Returns a list of the api keys that a user needs to run this job, but does not currently have in their .env file.
23
- """
24
- missing_api_keys = set()
25
-
26
- from edsl import Model
27
- from edsl.enums import service_to_api_keyname
28
-
29
- for model in self.jobs.models + [Model()]:
30
- if not model.has_valid_api_key():
31
- key_name = service_to_api_keyname.get(
32
- model._inference_service_, "NOT FOUND"
33
- )
34
- missing_api_keys.add(key_name)
35
-
36
- return missing_api_keys
37
-
38
- def user_has_ep_api_key(self) -> bool:
39
- """
40
- Returns True if the user has an EXPECTED_PARROT_API_KEY in their env.
41
-
42
- Otherwise, returns False.
43
- """
44
-
45
- coop_api_key = os.getenv("EXPECTED_PARROT_API_KEY")
46
-
47
- if coop_api_key is not None:
48
- return True
49
- else:
50
- return False
51
-
52
- def user_has_all_model_keys(self):
53
- """
54
- Returns True if the user has all model keys required to run their job.
55
-
56
- Otherwise, returns False.
57
- """
58
-
59
- try:
60
- self.check_api_keys()
61
- return True
62
- except MissingAPIKeyError:
63
- return False
64
- except Exception:
65
- raise
66
-
67
- def needs_external_llms(self) -> bool:
68
- """
69
- Returns True if the job needs external LLMs to run.
70
-
71
- Otherwise, returns False.
72
- """
73
- # These cases are necessary to skip the API key check during doctests
74
-
75
- # Accounts for Results.example()
76
- all_agents_answer_questions_directly = len(self.jobs.agents) > 0 and all(
77
- [hasattr(a, "answer_question_directly") for a in self.jobs.agents]
78
- )
79
-
80
- # Accounts for InterviewExceptionEntry.example()
81
- only_model_is_test = set([m.model for m in self.jobs.models]) == set(["test"])
82
-
83
- # Accounts for Survey.__call__
84
- all_questions_are_functional = set(
85
- [q.question_type for q in self.jobs.survey.questions]
86
- ) == set(["functional"])
87
-
88
- if (
89
- all_agents_answer_questions_directly
90
- or only_model_is_test
91
- or all_questions_are_functional
92
- ):
93
- return False
94
- else:
95
- return True
96
-
97
- def needs_key_process(self):
98
- return (
99
- not self.user_has_all_model_keys()
100
- and not self.user_has_ep_api_key()
101
- and self.needs_external_llms()
102
- )
103
-
104
- def key_process(self):
105
- import secrets
106
- from dotenv import load_dotenv
107
- from edsl import CONFIG
108
- from edsl.coop.coop import Coop
109
- from edsl.utilities.utilities import write_api_key_to_env
110
-
111
- missing_api_keys = self.get_missing_api_keys()
112
-
113
- edsl_auth_token = secrets.token_urlsafe(16)
114
-
115
- print("You're missing some of the API keys needed to run this job:")
116
- for api_key in missing_api_keys:
117
- print(f" 🔑 {api_key}")
118
- print(
119
- "\nYou can either add the missing keys to your .env file, or use remote inference."
120
- )
121
- print("Remote inference allows you to run jobs on our server.")
122
- print("\n🚀 To use remote inference, sign up at the following link:")
123
-
124
- coop = Coop()
125
- coop._display_login_url(edsl_auth_token=edsl_auth_token)
126
-
127
- print(
128
- "\nOnce you log in, we will automatically retrieve your Expected Parrot API key and continue your job remotely."
129
- )
130
-
131
- api_key = coop._poll_for_api_key(edsl_auth_token)
132
-
133
- if api_key is None:
134
- print("\nTimed out waiting for login. Please try again.")
135
- return
136
-
137
- write_api_key_to_env(api_key)
138
- print("✨ API key retrieved and written to .env file.\n")
139
-
140
- # Retrieve API key so we can continue running the job
141
- load_dotenv()
142
-
143
-
144
- if __name__ == "__main__":
145
- import doctest
146
-
147
- doctest.testmod()