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.
Files changed (248) hide show
  1. edsl/Base.py +303 -303
  2. edsl/BaseDiff.py +260 -260
  3. edsl/TemplateLoader.py +24 -24
  4. edsl/__init__.py +49 -49
  5. edsl/__version__.py +1 -1
  6. edsl/agents/Agent.py +858 -858
  7. edsl/agents/AgentList.py +362 -362
  8. edsl/agents/Invigilator.py +222 -222
  9. edsl/agents/InvigilatorBase.py +284 -284
  10. edsl/agents/PromptConstructor.py +353 -353
  11. edsl/agents/__init__.py +3 -3
  12. edsl/agents/descriptors.py +99 -99
  13. edsl/agents/prompt_helpers.py +129 -129
  14. edsl/auto/AutoStudy.py +117 -117
  15. edsl/auto/StageBase.py +230 -230
  16. edsl/auto/StageGenerateSurvey.py +178 -178
  17. edsl/auto/StageLabelQuestions.py +125 -125
  18. edsl/auto/StagePersona.py +61 -61
  19. edsl/auto/StagePersonaDimensionValueRanges.py +88 -88
  20. edsl/auto/StagePersonaDimensionValues.py +74 -74
  21. edsl/auto/StagePersonaDimensions.py +69 -69
  22. edsl/auto/StageQuestions.py +73 -73
  23. edsl/auto/SurveyCreatorPipeline.py +21 -21
  24. edsl/auto/utilities.py +224 -224
  25. edsl/base/Base.py +279 -279
  26. edsl/config.py +149 -149
  27. edsl/conversation/Conversation.py +290 -290
  28. edsl/conversation/car_buying.py +58 -58
  29. edsl/conversation/chips.py +95 -95
  30. edsl/conversation/mug_negotiation.py +81 -81
  31. edsl/conversation/next_speaker_utilities.py +93 -93
  32. edsl/coop/PriceFetcher.py +54 -54
  33. edsl/coop/__init__.py +2 -2
  34. edsl/coop/coop.py +961 -961
  35. edsl/coop/utils.py +131 -131
  36. edsl/data/Cache.py +530 -530
  37. edsl/data/CacheEntry.py +228 -228
  38. edsl/data/CacheHandler.py +149 -149
  39. edsl/data/RemoteCacheSync.py +97 -97
  40. edsl/data/SQLiteDict.py +292 -292
  41. edsl/data/__init__.py +4 -4
  42. edsl/data/orm.py +10 -10
  43. edsl/data_transfer_models.py +73 -73
  44. edsl/enums.py +173 -173
  45. edsl/exceptions/BaseException.py +21 -21
  46. edsl/exceptions/__init__.py +54 -54
  47. edsl/exceptions/agents.py +42 -42
  48. edsl/exceptions/cache.py +5 -5
  49. edsl/exceptions/configuration.py +16 -16
  50. edsl/exceptions/coop.py +10 -10
  51. edsl/exceptions/data.py +14 -14
  52. edsl/exceptions/general.py +34 -34
  53. edsl/exceptions/jobs.py +33 -33
  54. edsl/exceptions/language_models.py +63 -63
  55. edsl/exceptions/prompts.py +15 -15
  56. edsl/exceptions/questions.py +91 -91
  57. edsl/exceptions/results.py +29 -29
  58. edsl/exceptions/scenarios.py +22 -22
  59. edsl/exceptions/surveys.py +37 -37
  60. edsl/inference_services/AnthropicService.py +87 -87
  61. edsl/inference_services/AwsBedrock.py +120 -120
  62. edsl/inference_services/AzureAI.py +217 -217
  63. edsl/inference_services/DeepInfraService.py +18 -18
  64. edsl/inference_services/GoogleService.py +156 -156
  65. edsl/inference_services/GroqService.py +20 -20
  66. edsl/inference_services/InferenceServiceABC.py +147 -147
  67. edsl/inference_services/InferenceServicesCollection.py +97 -97
  68. edsl/inference_services/MistralAIService.py +123 -123
  69. edsl/inference_services/OllamaService.py +18 -18
  70. edsl/inference_services/OpenAIService.py +224 -224
  71. edsl/inference_services/TestService.py +89 -89
  72. edsl/inference_services/TogetherAIService.py +170 -170
  73. edsl/inference_services/models_available_cache.py +118 -118
  74. edsl/inference_services/rate_limits_cache.py +25 -25
  75. edsl/inference_services/registry.py +39 -39
  76. edsl/inference_services/write_available.py +10 -10
  77. edsl/jobs/Answers.py +56 -56
  78. edsl/jobs/Jobs.py +1358 -1358
  79. edsl/jobs/__init__.py +1 -1
  80. edsl/jobs/buckets/BucketCollection.py +63 -63
  81. edsl/jobs/buckets/ModelBuckets.py +65 -65
  82. edsl/jobs/buckets/TokenBucket.py +251 -251
  83. edsl/jobs/interviews/Interview.py +661 -661
  84. edsl/jobs/interviews/InterviewExceptionCollection.py +99 -99
  85. edsl/jobs/interviews/InterviewExceptionEntry.py +186 -186
  86. edsl/jobs/interviews/InterviewStatistic.py +63 -63
  87. edsl/jobs/interviews/InterviewStatisticsCollection.py +25 -25
  88. edsl/jobs/interviews/InterviewStatusDictionary.py +78 -78
  89. edsl/jobs/interviews/InterviewStatusLog.py +92 -92
  90. edsl/jobs/interviews/ReportErrors.py +66 -66
  91. edsl/jobs/interviews/interview_status_enum.py +9 -9
  92. edsl/jobs/runners/JobsRunnerAsyncio.py +361 -361
  93. edsl/jobs/runners/JobsRunnerStatus.py +332 -332
  94. edsl/jobs/tasks/QuestionTaskCreator.py +242 -242
  95. edsl/jobs/tasks/TaskCreators.py +64 -64
  96. edsl/jobs/tasks/TaskHistory.py +451 -451
  97. edsl/jobs/tasks/TaskStatusLog.py +23 -23
  98. edsl/jobs/tasks/task_status_enum.py +163 -163
  99. edsl/jobs/tokens/InterviewTokenUsage.py +27 -27
  100. edsl/jobs/tokens/TokenUsage.py +34 -34
  101. edsl/language_models/KeyLookup.py +30 -30
  102. edsl/language_models/LanguageModel.py +708 -708
  103. edsl/language_models/ModelList.py +109 -109
  104. edsl/language_models/RegisterLanguageModelsMeta.py +184 -184
  105. edsl/language_models/__init__.py +3 -3
  106. edsl/language_models/fake_openai_call.py +15 -15
  107. edsl/language_models/fake_openai_service.py +61 -61
  108. edsl/language_models/registry.py +137 -137
  109. edsl/language_models/repair.py +156 -156
  110. edsl/language_models/unused/ReplicateBase.py +83 -83
  111. edsl/language_models/utilities.py +64 -64
  112. edsl/notebooks/Notebook.py +258 -258
  113. edsl/notebooks/__init__.py +1 -1
  114. edsl/prompts/Prompt.py +357 -357
  115. edsl/prompts/__init__.py +2 -2
  116. edsl/questions/AnswerValidatorMixin.py +289 -289
  117. edsl/questions/QuestionBase.py +660 -660
  118. edsl/questions/QuestionBaseGenMixin.py +161 -161
  119. edsl/questions/QuestionBasePromptsMixin.py +217 -217
  120. edsl/questions/QuestionBudget.py +227 -227
  121. edsl/questions/QuestionCheckBox.py +359 -359
  122. edsl/questions/QuestionExtract.py +183 -183
  123. edsl/questions/QuestionFreeText.py +114 -114
  124. edsl/questions/QuestionFunctional.py +166 -166
  125. edsl/questions/QuestionList.py +231 -231
  126. edsl/questions/QuestionMultipleChoice.py +286 -286
  127. edsl/questions/QuestionNumerical.py +153 -153
  128. edsl/questions/QuestionRank.py +324 -324
  129. edsl/questions/Quick.py +41 -41
  130. edsl/questions/RegisterQuestionsMeta.py +71 -71
  131. edsl/questions/ResponseValidatorABC.py +174 -174
  132. edsl/questions/SimpleAskMixin.py +73 -73
  133. edsl/questions/__init__.py +26 -26
  134. edsl/questions/compose_questions.py +98 -98
  135. edsl/questions/decorators.py +21 -21
  136. edsl/questions/derived/QuestionLikertFive.py +76 -76
  137. edsl/questions/derived/QuestionLinearScale.py +87 -87
  138. edsl/questions/derived/QuestionTopK.py +93 -93
  139. edsl/questions/derived/QuestionYesNo.py +82 -82
  140. edsl/questions/descriptors.py +413 -413
  141. edsl/questions/prompt_templates/question_budget.jinja +13 -13
  142. edsl/questions/prompt_templates/question_checkbox.jinja +32 -32
  143. edsl/questions/prompt_templates/question_extract.jinja +11 -11
  144. edsl/questions/prompt_templates/question_free_text.jinja +3 -3
  145. edsl/questions/prompt_templates/question_linear_scale.jinja +11 -11
  146. edsl/questions/prompt_templates/question_list.jinja +17 -17
  147. edsl/questions/prompt_templates/question_multiple_choice.jinja +33 -33
  148. edsl/questions/prompt_templates/question_numerical.jinja +36 -36
  149. edsl/questions/question_registry.py +147 -147
  150. edsl/questions/settings.py +12 -12
  151. edsl/questions/templates/budget/answering_instructions.jinja +7 -7
  152. edsl/questions/templates/budget/question_presentation.jinja +7 -7
  153. edsl/questions/templates/checkbox/answering_instructions.jinja +10 -10
  154. edsl/questions/templates/checkbox/question_presentation.jinja +22 -22
  155. edsl/questions/templates/extract/answering_instructions.jinja +7 -7
  156. edsl/questions/templates/likert_five/answering_instructions.jinja +10 -10
  157. edsl/questions/templates/likert_five/question_presentation.jinja +11 -11
  158. edsl/questions/templates/linear_scale/answering_instructions.jinja +5 -5
  159. edsl/questions/templates/linear_scale/question_presentation.jinja +5 -5
  160. edsl/questions/templates/list/answering_instructions.jinja +3 -3
  161. edsl/questions/templates/list/question_presentation.jinja +5 -5
  162. edsl/questions/templates/multiple_choice/answering_instructions.jinja +9 -9
  163. edsl/questions/templates/multiple_choice/question_presentation.jinja +11 -11
  164. edsl/questions/templates/numerical/answering_instructions.jinja +6 -6
  165. edsl/questions/templates/numerical/question_presentation.jinja +6 -6
  166. edsl/questions/templates/rank/answering_instructions.jinja +11 -11
  167. edsl/questions/templates/rank/question_presentation.jinja +15 -15
  168. edsl/questions/templates/top_k/answering_instructions.jinja +8 -8
  169. edsl/questions/templates/top_k/question_presentation.jinja +22 -22
  170. edsl/questions/templates/yes_no/answering_instructions.jinja +6 -6
  171. edsl/questions/templates/yes_no/question_presentation.jinja +11 -11
  172. edsl/results/Dataset.py +293 -293
  173. edsl/results/DatasetExportMixin.py +717 -717
  174. edsl/results/DatasetTree.py +145 -145
  175. edsl/results/Result.py +456 -456
  176. edsl/results/Results.py +1071 -1071
  177. edsl/results/ResultsDBMixin.py +238 -238
  178. edsl/results/ResultsExportMixin.py +43 -43
  179. edsl/results/ResultsFetchMixin.py +33 -33
  180. edsl/results/ResultsGGMixin.py +121 -121
  181. edsl/results/ResultsToolsMixin.py +98 -98
  182. edsl/results/Selector.py +135 -135
  183. edsl/results/__init__.py +2 -2
  184. edsl/results/tree_explore.py +115 -115
  185. edsl/scenarios/FileStore.py +458 -458
  186. edsl/scenarios/Scenario.py +544 -544
  187. edsl/scenarios/ScenarioHtmlMixin.py +64 -64
  188. edsl/scenarios/ScenarioList.py +1112 -1112
  189. edsl/scenarios/ScenarioListExportMixin.py +52 -52
  190. edsl/scenarios/ScenarioListPdfMixin.py +261 -261
  191. edsl/scenarios/__init__.py +4 -4
  192. edsl/shared.py +1 -1
  193. edsl/study/ObjectEntry.py +173 -173
  194. edsl/study/ProofOfWork.py +113 -113
  195. edsl/study/SnapShot.py +80 -80
  196. edsl/study/Study.py +528 -528
  197. edsl/study/__init__.py +4 -4
  198. edsl/surveys/DAG.py +148 -148
  199. edsl/surveys/Memory.py +31 -31
  200. edsl/surveys/MemoryPlan.py +244 -244
  201. edsl/surveys/Rule.py +326 -326
  202. edsl/surveys/RuleCollection.py +387 -387
  203. edsl/surveys/Survey.py +1787 -1787
  204. edsl/surveys/SurveyCSS.py +261 -261
  205. edsl/surveys/SurveyExportMixin.py +259 -259
  206. edsl/surveys/SurveyFlowVisualizationMixin.py +121 -121
  207. edsl/surveys/SurveyQualtricsImport.py +284 -284
  208. edsl/surveys/__init__.py +3 -3
  209. edsl/surveys/base.py +53 -53
  210. edsl/surveys/descriptors.py +56 -56
  211. edsl/surveys/instructions/ChangeInstruction.py +49 -49
  212. edsl/surveys/instructions/Instruction.py +53 -53
  213. edsl/surveys/instructions/InstructionCollection.py +77 -77
  214. edsl/templates/error_reporting/base.html +23 -23
  215. edsl/templates/error_reporting/exceptions_by_model.html +34 -34
  216. edsl/templates/error_reporting/exceptions_by_question_name.html +16 -16
  217. edsl/templates/error_reporting/exceptions_by_type.html +16 -16
  218. edsl/templates/error_reporting/interview_details.html +115 -115
  219. edsl/templates/error_reporting/interviews.html +9 -9
  220. edsl/templates/error_reporting/overview.html +4 -4
  221. edsl/templates/error_reporting/performance_plot.html +1 -1
  222. edsl/templates/error_reporting/report.css +73 -73
  223. edsl/templates/error_reporting/report.html +117 -117
  224. edsl/templates/error_reporting/report.js +25 -25
  225. edsl/tools/__init__.py +1 -1
  226. edsl/tools/clusters.py +192 -192
  227. edsl/tools/embeddings.py +27 -27
  228. edsl/tools/embeddings_plotting.py +118 -118
  229. edsl/tools/plotting.py +112 -112
  230. edsl/tools/summarize.py +18 -18
  231. edsl/utilities/SystemInfo.py +28 -28
  232. edsl/utilities/__init__.py +22 -22
  233. edsl/utilities/ast_utilities.py +25 -25
  234. edsl/utilities/data/Registry.py +6 -6
  235. edsl/utilities/data/__init__.py +1 -1
  236. edsl/utilities/data/scooter_results.json +1 -1
  237. edsl/utilities/decorators.py +77 -77
  238. edsl/utilities/gcp_bucket/cloud_storage.py +96 -96
  239. edsl/utilities/interface.py +627 -627
  240. edsl/utilities/naming_utilities.py +263 -263
  241. edsl/utilities/repair_functions.py +28 -28
  242. edsl/utilities/restricted_python.py +70 -70
  243. edsl/utilities/utilities.py +409 -409
  244. {edsl-0.1.38.dev2.dist-info → edsl-0.1.38.dev3.dist-info}/LICENSE +21 -21
  245. {edsl-0.1.38.dev2.dist-info → edsl-0.1.38.dev3.dist-info}/METADATA +1 -1
  246. edsl-0.1.38.dev3.dist-info/RECORD +269 -0
  247. edsl-0.1.38.dev2.dist-info/RECORD +0 -269
  248. {edsl-0.1.38.dev2.dist-info → edsl-0.1.38.dev3.dist-info}/WHEEL +0 -0
@@ -1,170 +1,170 @@
1
- import aiohttp
2
- import json
3
- import requests
4
- from typing import Any, List, Optional
5
-
6
- # from edsl.inference_services.InferenceServiceABC import InferenceServiceABC
7
- from edsl.language_models import LanguageModel
8
-
9
- from edsl.inference_services.OpenAIService import OpenAIService
10
- import openai
11
-
12
-
13
- class TogetherAIService(OpenAIService):
14
- """DeepInfra service class."""
15
-
16
- _inference_service_ = "together"
17
- _env_key_name_ = "TOGETHER_API_KEY"
18
- _base_url_ = "https://api.together.xyz/v1"
19
- _models_list_cache: List[str] = []
20
-
21
- # These are non-serverless models. There was no api param to filter them
22
- model_exclude_list = [
23
- "EleutherAI/llemma_7b",
24
- "HuggingFaceH4/zephyr-7b-beta",
25
- "Nexusflow/NexusRaven-V2-13B",
26
- "NousResearch/Hermes-2-Theta-Llama-3-70B",
27
- "NousResearch/Nous-Capybara-7B-V1p9",
28
- "NousResearch/Nous-Hermes-13b",
29
- "NousResearch/Nous-Hermes-2-Mistral-7B-DPO",
30
- "NousResearch/Nous-Hermes-2-Mixtral-8x7B-SFT",
31
- "NousResearch/Nous-Hermes-Llama2-13b",
32
- "NousResearch/Nous-Hermes-Llama2-70b",
33
- "NousResearch/Nous-Hermes-llama-2-7b",
34
- "NumbersStation/nsql-llama-2-7B",
35
- "Open-Orca/Mistral-7B-OpenOrca",
36
- "Phind/Phind-CodeLlama-34B-Python-v1",
37
- "Phind/Phind-CodeLlama-34B-v2",
38
- "Qwen/Qwen1.5-0.5B",
39
- "Qwen/Qwen1.5-0.5B-Chat",
40
- "Qwen/Qwen1.5-1.8B",
41
- "Qwen/Qwen1.5-1.8B-Chat",
42
- "Qwen/Qwen1.5-14B",
43
- "Qwen/Qwen1.5-14B-Chat",
44
- "Qwen/Qwen1.5-32B",
45
- "Qwen/Qwen1.5-32B-Chat",
46
- "Qwen/Qwen1.5-4B",
47
- "Qwen/Qwen1.5-4B-Chat",
48
- "Qwen/Qwen1.5-72B",
49
- "Qwen/Qwen1.5-7B",
50
- "Qwen/Qwen1.5-7B-Chat",
51
- "Qwen/Qwen2-1.5B",
52
- "Qwen/Qwen2-1.5B-Instruct",
53
- "Qwen/Qwen2-72B",
54
- "Qwen/Qwen2-7B",
55
- "Qwen/Qwen2-7B-Instruct",
56
- "SG161222/Realistic_Vision_V3.0_VAE",
57
- "Snowflake/snowflake-arctic-instruct",
58
- "Undi95/ReMM-SLERP-L2-13B",
59
- "Undi95/Toppy-M-7B",
60
- "WizardLM/WizardCoder-Python-34B-V1.0",
61
- "WizardLM/WizardLM-13B-V1.2",
62
- "WizardLM/WizardLM-70B-V1.0",
63
- "allenai/OLMo-7B",
64
- "allenai/OLMo-7B-Instruct",
65
- "bert-base-uncased",
66
- "codellama/CodeLlama-13b-Instruct-hf",
67
- "codellama/CodeLlama-13b-Python-hf",
68
- "codellama/CodeLlama-13b-hf",
69
- "codellama/CodeLlama-34b-Python-hf",
70
- "codellama/CodeLlama-34b-hf",
71
- "codellama/CodeLlama-70b-Instruct-hf",
72
- "codellama/CodeLlama-70b-Python-hf",
73
- "codellama/CodeLlama-70b-hf",
74
- "codellama/CodeLlama-7b-Instruct-hf",
75
- "codellama/CodeLlama-7b-Python-hf",
76
- "codellama/CodeLlama-7b-hf",
77
- "cognitivecomputations/dolphin-2.5-mixtral-8x7b",
78
- "deepseek-ai/deepseek-coder-33b-instruct",
79
- "garage-bAInd/Platypus2-70B-instruct",
80
- "google/gemma-2b",
81
- "google/gemma-7b",
82
- "google/gemma-7b-it",
83
- "gradientai/Llama-3-70B-Instruct-Gradient-1048k",
84
- "hazyresearch/M2-BERT-2k-Retrieval-Encoder-V1",
85
- "huggyllama/llama-13b",
86
- "huggyllama/llama-30b",
87
- "huggyllama/llama-65b",
88
- "huggyllama/llama-7b",
89
- "lmsys/vicuna-13b-v1.3",
90
- "lmsys/vicuna-13b-v1.5",
91
- "lmsys/vicuna-13b-v1.5-16k",
92
- "lmsys/vicuna-7b-v1.3",
93
- "lmsys/vicuna-7b-v1.5",
94
- "meta-llama/Llama-2-13b-hf",
95
- "meta-llama/Llama-2-70b-chat-hf",
96
- "meta-llama/Llama-2-7b-hf",
97
- "meta-llama/Llama-3-70b-hf",
98
- "meta-llama/Llama-3-8b-hf",
99
- "meta-llama/Meta-Llama-3-70B",
100
- "meta-llama/Meta-Llama-3-70B-Instruct",
101
- "meta-llama/Meta-Llama-3-8B-Instruct",
102
- "meta-llama/Meta-Llama-3.1-70B-Instruct-Reference",
103
- "meta-llama/Meta-Llama-3.1-70B-Reference",
104
- "meta-llama/Meta-Llama-3.1-8B-Reference",
105
- "microsoft/phi-2",
106
- "mistralai/Mixtral-8x22B",
107
- "openchat/openchat-3.5-1210",
108
- "prompthero/openjourney",
109
- "runwayml/stable-diffusion-v1-5",
110
- "sentence-transformers/msmarco-bert-base-dot-v5",
111
- "snorkelai/Snorkel-Mistral-PairRM-DPO",
112
- "stabilityai/stable-diffusion-2-1",
113
- "teknium/OpenHermes-2-Mistral-7B",
114
- "teknium/OpenHermes-2p5-Mistral-7B",
115
- "togethercomputer/CodeLlama-13b-Instruct",
116
- "togethercomputer/CodeLlama-13b-Python",
117
- "togethercomputer/CodeLlama-34b",
118
- "togethercomputer/CodeLlama-34b-Python",
119
- "togethercomputer/CodeLlama-7b-Instruct",
120
- "togethercomputer/CodeLlama-7b-Python",
121
- "togethercomputer/Koala-13B",
122
- "togethercomputer/Koala-7B",
123
- "togethercomputer/LLaMA-2-7B-32K",
124
- "togethercomputer/SOLAR-10.7B-Instruct-v1.0-int4",
125
- "togethercomputer/StripedHyena-Hessian-7B",
126
- "togethercomputer/alpaca-7b",
127
- "togethercomputer/evo-1-131k-base",
128
- "togethercomputer/evo-1-8k-base",
129
- "togethercomputer/guanaco-13b",
130
- "togethercomputer/guanaco-33b",
131
- "togethercomputer/guanaco-65b",
132
- "togethercomputer/guanaco-7b",
133
- "togethercomputer/llama-2-13b",
134
- "togethercomputer/llama-2-70b-chat",
135
- "togethercomputer/llama-2-7b",
136
- "wavymulder/Analog-Diffusion",
137
- "zero-one-ai/Yi-34B",
138
- "zero-one-ai/Yi-34B-Chat",
139
- "zero-one-ai/Yi-6B",
140
- ]
141
-
142
- _sync_client_ = openai.OpenAI
143
- _async_client_ = openai.AsyncOpenAI
144
-
145
- @classmethod
146
- def get_model_list(cls):
147
- # Togheter.ai has a different response in model list then openai
148
- # and the OpenAI class returns an error when calling .models.list()
149
- import requests
150
- import os
151
-
152
- url = "https://api.together.xyz/v1/models?filter=serverless"
153
- token = os.getenv(cls._env_key_name_)
154
- headers = {"accept": "application/json", "authorization": f"Bearer {token}"}
155
-
156
- response = requests.get(url, headers=headers)
157
- return response.json()
158
-
159
- @classmethod
160
- def available(cls) -> List[str]:
161
- if not cls._models_list_cache:
162
- try:
163
- cls._models_list_cache = [
164
- m["id"]
165
- for m in cls.get_model_list()
166
- if m["id"] not in cls.model_exclude_list
167
- ]
168
- except Exception as e:
169
- raise
170
- return cls._models_list_cache
1
+ import aiohttp
2
+ import json
3
+ import requests
4
+ from typing import Any, List, Optional
5
+
6
+ # from edsl.inference_services.InferenceServiceABC import InferenceServiceABC
7
+ from edsl.language_models import LanguageModel
8
+
9
+ from edsl.inference_services.OpenAIService import OpenAIService
10
+ import openai
11
+
12
+
13
+ class TogetherAIService(OpenAIService):
14
+ """DeepInfra service class."""
15
+
16
+ _inference_service_ = "together"
17
+ _env_key_name_ = "TOGETHER_API_KEY"
18
+ _base_url_ = "https://api.together.xyz/v1"
19
+ _models_list_cache: List[str] = []
20
+
21
+ # These are non-serverless models. There was no api param to filter them
22
+ model_exclude_list = [
23
+ "EleutherAI/llemma_7b",
24
+ "HuggingFaceH4/zephyr-7b-beta",
25
+ "Nexusflow/NexusRaven-V2-13B",
26
+ "NousResearch/Hermes-2-Theta-Llama-3-70B",
27
+ "NousResearch/Nous-Capybara-7B-V1p9",
28
+ "NousResearch/Nous-Hermes-13b",
29
+ "NousResearch/Nous-Hermes-2-Mistral-7B-DPO",
30
+ "NousResearch/Nous-Hermes-2-Mixtral-8x7B-SFT",
31
+ "NousResearch/Nous-Hermes-Llama2-13b",
32
+ "NousResearch/Nous-Hermes-Llama2-70b",
33
+ "NousResearch/Nous-Hermes-llama-2-7b",
34
+ "NumbersStation/nsql-llama-2-7B",
35
+ "Open-Orca/Mistral-7B-OpenOrca",
36
+ "Phind/Phind-CodeLlama-34B-Python-v1",
37
+ "Phind/Phind-CodeLlama-34B-v2",
38
+ "Qwen/Qwen1.5-0.5B",
39
+ "Qwen/Qwen1.5-0.5B-Chat",
40
+ "Qwen/Qwen1.5-1.8B",
41
+ "Qwen/Qwen1.5-1.8B-Chat",
42
+ "Qwen/Qwen1.5-14B",
43
+ "Qwen/Qwen1.5-14B-Chat",
44
+ "Qwen/Qwen1.5-32B",
45
+ "Qwen/Qwen1.5-32B-Chat",
46
+ "Qwen/Qwen1.5-4B",
47
+ "Qwen/Qwen1.5-4B-Chat",
48
+ "Qwen/Qwen1.5-72B",
49
+ "Qwen/Qwen1.5-7B",
50
+ "Qwen/Qwen1.5-7B-Chat",
51
+ "Qwen/Qwen2-1.5B",
52
+ "Qwen/Qwen2-1.5B-Instruct",
53
+ "Qwen/Qwen2-72B",
54
+ "Qwen/Qwen2-7B",
55
+ "Qwen/Qwen2-7B-Instruct",
56
+ "SG161222/Realistic_Vision_V3.0_VAE",
57
+ "Snowflake/snowflake-arctic-instruct",
58
+ "Undi95/ReMM-SLERP-L2-13B",
59
+ "Undi95/Toppy-M-7B",
60
+ "WizardLM/WizardCoder-Python-34B-V1.0",
61
+ "WizardLM/WizardLM-13B-V1.2",
62
+ "WizardLM/WizardLM-70B-V1.0",
63
+ "allenai/OLMo-7B",
64
+ "allenai/OLMo-7B-Instruct",
65
+ "bert-base-uncased",
66
+ "codellama/CodeLlama-13b-Instruct-hf",
67
+ "codellama/CodeLlama-13b-Python-hf",
68
+ "codellama/CodeLlama-13b-hf",
69
+ "codellama/CodeLlama-34b-Python-hf",
70
+ "codellama/CodeLlama-34b-hf",
71
+ "codellama/CodeLlama-70b-Instruct-hf",
72
+ "codellama/CodeLlama-70b-Python-hf",
73
+ "codellama/CodeLlama-70b-hf",
74
+ "codellama/CodeLlama-7b-Instruct-hf",
75
+ "codellama/CodeLlama-7b-Python-hf",
76
+ "codellama/CodeLlama-7b-hf",
77
+ "cognitivecomputations/dolphin-2.5-mixtral-8x7b",
78
+ "deepseek-ai/deepseek-coder-33b-instruct",
79
+ "garage-bAInd/Platypus2-70B-instruct",
80
+ "google/gemma-2b",
81
+ "google/gemma-7b",
82
+ "google/gemma-7b-it",
83
+ "gradientai/Llama-3-70B-Instruct-Gradient-1048k",
84
+ "hazyresearch/M2-BERT-2k-Retrieval-Encoder-V1",
85
+ "huggyllama/llama-13b",
86
+ "huggyllama/llama-30b",
87
+ "huggyllama/llama-65b",
88
+ "huggyllama/llama-7b",
89
+ "lmsys/vicuna-13b-v1.3",
90
+ "lmsys/vicuna-13b-v1.5",
91
+ "lmsys/vicuna-13b-v1.5-16k",
92
+ "lmsys/vicuna-7b-v1.3",
93
+ "lmsys/vicuna-7b-v1.5",
94
+ "meta-llama/Llama-2-13b-hf",
95
+ "meta-llama/Llama-2-70b-chat-hf",
96
+ "meta-llama/Llama-2-7b-hf",
97
+ "meta-llama/Llama-3-70b-hf",
98
+ "meta-llama/Llama-3-8b-hf",
99
+ "meta-llama/Meta-Llama-3-70B",
100
+ "meta-llama/Meta-Llama-3-70B-Instruct",
101
+ "meta-llama/Meta-Llama-3-8B-Instruct",
102
+ "meta-llama/Meta-Llama-3.1-70B-Instruct-Reference",
103
+ "meta-llama/Meta-Llama-3.1-70B-Reference",
104
+ "meta-llama/Meta-Llama-3.1-8B-Reference",
105
+ "microsoft/phi-2",
106
+ "mistralai/Mixtral-8x22B",
107
+ "openchat/openchat-3.5-1210",
108
+ "prompthero/openjourney",
109
+ "runwayml/stable-diffusion-v1-5",
110
+ "sentence-transformers/msmarco-bert-base-dot-v5",
111
+ "snorkelai/Snorkel-Mistral-PairRM-DPO",
112
+ "stabilityai/stable-diffusion-2-1",
113
+ "teknium/OpenHermes-2-Mistral-7B",
114
+ "teknium/OpenHermes-2p5-Mistral-7B",
115
+ "togethercomputer/CodeLlama-13b-Instruct",
116
+ "togethercomputer/CodeLlama-13b-Python",
117
+ "togethercomputer/CodeLlama-34b",
118
+ "togethercomputer/CodeLlama-34b-Python",
119
+ "togethercomputer/CodeLlama-7b-Instruct",
120
+ "togethercomputer/CodeLlama-7b-Python",
121
+ "togethercomputer/Koala-13B",
122
+ "togethercomputer/Koala-7B",
123
+ "togethercomputer/LLaMA-2-7B-32K",
124
+ "togethercomputer/SOLAR-10.7B-Instruct-v1.0-int4",
125
+ "togethercomputer/StripedHyena-Hessian-7B",
126
+ "togethercomputer/alpaca-7b",
127
+ "togethercomputer/evo-1-131k-base",
128
+ "togethercomputer/evo-1-8k-base",
129
+ "togethercomputer/guanaco-13b",
130
+ "togethercomputer/guanaco-33b",
131
+ "togethercomputer/guanaco-65b",
132
+ "togethercomputer/guanaco-7b",
133
+ "togethercomputer/llama-2-13b",
134
+ "togethercomputer/llama-2-70b-chat",
135
+ "togethercomputer/llama-2-7b",
136
+ "wavymulder/Analog-Diffusion",
137
+ "zero-one-ai/Yi-34B",
138
+ "zero-one-ai/Yi-34B-Chat",
139
+ "zero-one-ai/Yi-6B",
140
+ ]
141
+
142
+ _sync_client_ = openai.OpenAI
143
+ _async_client_ = openai.AsyncOpenAI
144
+
145
+ @classmethod
146
+ def get_model_list(cls):
147
+ # Togheter.ai has a different response in model list then openai
148
+ # and the OpenAI class returns an error when calling .models.list()
149
+ import requests
150
+ import os
151
+
152
+ url = "https://api.together.xyz/v1/models?filter=serverless"
153
+ token = os.getenv(cls._env_key_name_)
154
+ headers = {"accept": "application/json", "authorization": f"Bearer {token}"}
155
+
156
+ response = requests.get(url, headers=headers)
157
+ return response.json()
158
+
159
+ @classmethod
160
+ def available(cls) -> List[str]:
161
+ if not cls._models_list_cache:
162
+ try:
163
+ cls._models_list_cache = [
164
+ m["id"]
165
+ for m in cls.get_model_list()
166
+ if m["id"] not in cls.model_exclude_list
167
+ ]
168
+ except Exception as e:
169
+ raise
170
+ return cls._models_list_cache
@@ -1,118 +1,118 @@
1
- models_available = {
2
- "openai": [
3
- "gpt-3.5-turbo-1106",
4
- "gpt-4-0125-preview",
5
- "gpt-4-turbo-preview",
6
- "gpt-3.5-turbo-16k",
7
- "gpt-4-1106-preview",
8
- "gpt-4-turbo-2024-04-09",
9
- "gpt-3.5-turbo-16k-0613",
10
- "gpt-4o-2024-05-13",
11
- "gpt-4-turbo",
12
- "gpt-3.5-turbo-0613",
13
- "gpt-4",
14
- "gpt-4-0613",
15
- "gpt-3.5-turbo-0125",
16
- "gpt-3.5-turbo",
17
- "gpt-3.5-turbo-instruct",
18
- "gpt-3.5-turbo-instruct-0914",
19
- "gpt-3.5-turbo-0301",
20
- "gpt-4-vision-preview",
21
- "gpt-4-1106-vision-preview",
22
- "gpt-4o",
23
- ],
24
- "anthropic": [
25
- "claude-3-5-sonnet-20240620",
26
- "claude-3-opus-20240229",
27
- "claude-3-sonnet-20240229",
28
- "claude-3-haiku-20240307",
29
- ],
30
- "deep_infra": [
31
- "meta-llama/Llama-2-13b-chat-hf",
32
- "mistralai/Mixtral-8x22B-Instruct-v0.1",
33
- "Gryphe/MythoMax-L2-13b-turbo",
34
- "mistralai/Mistral-7B-Instruct-v0.1",
35
- "Austism/chronos-hermes-13b-v2",
36
- "meta-llama/Llama-2-70b-chat-hf",
37
- "mistralai/Mistral-7B-Instruct-v0.3",
38
- "meta-llama/Llama-2-7b-chat-hf",
39
- "Qwen/Qwen2-72B-Instruct",
40
- "HuggingFaceH4/zephyr-orpo-141b-A35b-v0.1",
41
- "cognitivecomputations/dolphin-2.6-mixtral-8x7b",
42
- "bigcode/starcoder2-15b",
43
- "microsoft/WizardLM-2-8x22B",
44
- "codellama/CodeLlama-70b-Instruct-hf",
45
- "Gryphe/MythoMax-L2-13b",
46
- "microsoft/WizardLM-2-7B",
47
- "01-ai/Yi-34B-Chat",
48
- "bigcode/starcoder2-15b-instruct-v0.1",
49
- "mistralai/Mixtral-8x7B-Instruct-v0.1",
50
- "openchat/openchat-3.6-8b",
51
- "meta-llama/Meta-Llama-3-8B-Instruct",
52
- "microsoft/Phi-3-medium-4k-instruct",
53
- "Phind/Phind-CodeLlama-34B-v2",
54
- "google/codegemma-7b-it",
55
- "mistralai/Mistral-7B-Instruct-v0.2",
56
- "deepinfra/airoboros-70b",
57
- "mistralai/Mixtral-8x22B-v0.1",
58
- "llava-hf/llava-1.5-7b-hf",
59
- "codellama/CodeLlama-34b-Instruct-hf",
60
- "google/gemma-1.1-7b-it",
61
- "lizpreciatior/lzlv_70b_fp16_hf",
62
- "databricks/dbrx-instruct",
63
- "nvidia/Nemotron-4-340B-Instruct",
64
- "Qwen/Qwen2-7B-Instruct",
65
- "meta-llama/Meta-Llama-3-70B-Instruct",
66
- "openchat/openchat_3.5",
67
- ],
68
- "google": [
69
- "gemini-1.0-pro",
70
- "gemini-1.0-pro-001",
71
- "gemini-1.0-pro-latest",
72
- "gemini-1.0-pro-vision-latest",
73
- "gemini-1.5-flash",
74
- "gemini-1.5-flash-001",
75
- "gemini-1.5-flash-001-tuning",
76
- "gemini-1.5-flash-002",
77
- "gemini-1.5-flash-8b",
78
- "gemini-1.5-flash-8b-001",
79
- "gemini-1.5-flash-8b-exp-0827",
80
- "gemini-1.5-flash-8b-exp-0924",
81
- "gemini-1.5-flash-8b-latest",
82
- "gemini-1.5-flash-exp-0827",
83
- "gemini-1.5-flash-latest",
84
- "gemini-1.5-pro",
85
- "gemini-1.5-pro-001",
86
- "gemini-1.5-pro-002",
87
- "gemini-1.5-pro-exp-0801",
88
- "gemini-1.5-pro-exp-0827",
89
- "gemini-1.5-pro-latest",
90
- "gemini-pro",
91
- "gemini-pro-vision",
92
- ],
93
- "bedrock": [
94
- "amazon.titan-tg1-large",
95
- "amazon.titan-text-lite-v1",
96
- "amazon.titan-text-express-v1",
97
- "anthropic.claude-instant-v1",
98
- "anthropic.claude-v2:1",
99
- "anthropic.claude-v2",
100
- "anthropic.claude-3-sonnet-20240229-v1:0",
101
- "anthropic.claude-3-haiku-20240307-v1:0",
102
- "anthropic.claude-3-opus-20240229-v1:0",
103
- "anthropic.claude-3-5-sonnet-20240620-v1:0",
104
- "cohere.command-text-v14",
105
- "cohere.command-r-v1:0",
106
- "cohere.command-r-plus-v1:0",
107
- "cohere.command-light-text-v14",
108
- "meta.llama3-8b-instruct-v1:0",
109
- "meta.llama3-70b-instruct-v1:0",
110
- "meta.llama3-1-8b-instruct-v1:0",
111
- "meta.llama3-1-70b-instruct-v1:0",
112
- "meta.llama3-1-405b-instruct-v1:0",
113
- "mistral.mistral-7b-instruct-v0:2",
114
- "mistral.mixtral-8x7b-instruct-v0:1",
115
- "mistral.mistral-large-2402-v1:0",
116
- "mistral.mistral-large-2407-v1:0",
117
- ],
118
- }
1
+ models_available = {
2
+ "openai": [
3
+ "gpt-3.5-turbo-1106",
4
+ "gpt-4-0125-preview",
5
+ "gpt-4-turbo-preview",
6
+ "gpt-3.5-turbo-16k",
7
+ "gpt-4-1106-preview",
8
+ "gpt-4-turbo-2024-04-09",
9
+ "gpt-3.5-turbo-16k-0613",
10
+ "gpt-4o-2024-05-13",
11
+ "gpt-4-turbo",
12
+ "gpt-3.5-turbo-0613",
13
+ "gpt-4",
14
+ "gpt-4-0613",
15
+ "gpt-3.5-turbo-0125",
16
+ "gpt-3.5-turbo",
17
+ "gpt-3.5-turbo-instruct",
18
+ "gpt-3.5-turbo-instruct-0914",
19
+ "gpt-3.5-turbo-0301",
20
+ "gpt-4-vision-preview",
21
+ "gpt-4-1106-vision-preview",
22
+ "gpt-4o",
23
+ ],
24
+ "anthropic": [
25
+ "claude-3-5-sonnet-20240620",
26
+ "claude-3-opus-20240229",
27
+ "claude-3-sonnet-20240229",
28
+ "claude-3-haiku-20240307",
29
+ ],
30
+ "deep_infra": [
31
+ "meta-llama/Llama-2-13b-chat-hf",
32
+ "mistralai/Mixtral-8x22B-Instruct-v0.1",
33
+ "Gryphe/MythoMax-L2-13b-turbo",
34
+ "mistralai/Mistral-7B-Instruct-v0.1",
35
+ "Austism/chronos-hermes-13b-v2",
36
+ "meta-llama/Llama-2-70b-chat-hf",
37
+ "mistralai/Mistral-7B-Instruct-v0.3",
38
+ "meta-llama/Llama-2-7b-chat-hf",
39
+ "Qwen/Qwen2-72B-Instruct",
40
+ "HuggingFaceH4/zephyr-orpo-141b-A35b-v0.1",
41
+ "cognitivecomputations/dolphin-2.6-mixtral-8x7b",
42
+ "bigcode/starcoder2-15b",
43
+ "microsoft/WizardLM-2-8x22B",
44
+ "codellama/CodeLlama-70b-Instruct-hf",
45
+ "Gryphe/MythoMax-L2-13b",
46
+ "microsoft/WizardLM-2-7B",
47
+ "01-ai/Yi-34B-Chat",
48
+ "bigcode/starcoder2-15b-instruct-v0.1",
49
+ "mistralai/Mixtral-8x7B-Instruct-v0.1",
50
+ "openchat/openchat-3.6-8b",
51
+ "meta-llama/Meta-Llama-3-8B-Instruct",
52
+ "microsoft/Phi-3-medium-4k-instruct",
53
+ "Phind/Phind-CodeLlama-34B-v2",
54
+ "google/codegemma-7b-it",
55
+ "mistralai/Mistral-7B-Instruct-v0.2",
56
+ "deepinfra/airoboros-70b",
57
+ "mistralai/Mixtral-8x22B-v0.1",
58
+ "llava-hf/llava-1.5-7b-hf",
59
+ "codellama/CodeLlama-34b-Instruct-hf",
60
+ "google/gemma-1.1-7b-it",
61
+ "lizpreciatior/lzlv_70b_fp16_hf",
62
+ "databricks/dbrx-instruct",
63
+ "nvidia/Nemotron-4-340B-Instruct",
64
+ "Qwen/Qwen2-7B-Instruct",
65
+ "meta-llama/Meta-Llama-3-70B-Instruct",
66
+ "openchat/openchat_3.5",
67
+ ],
68
+ "google": [
69
+ "gemini-1.0-pro",
70
+ "gemini-1.0-pro-001",
71
+ "gemini-1.0-pro-latest",
72
+ "gemini-1.0-pro-vision-latest",
73
+ "gemini-1.5-flash",
74
+ "gemini-1.5-flash-001",
75
+ "gemini-1.5-flash-001-tuning",
76
+ "gemini-1.5-flash-002",
77
+ "gemini-1.5-flash-8b",
78
+ "gemini-1.5-flash-8b-001",
79
+ "gemini-1.5-flash-8b-exp-0827",
80
+ "gemini-1.5-flash-8b-exp-0924",
81
+ "gemini-1.5-flash-8b-latest",
82
+ "gemini-1.5-flash-exp-0827",
83
+ "gemini-1.5-flash-latest",
84
+ "gemini-1.5-pro",
85
+ "gemini-1.5-pro-001",
86
+ "gemini-1.5-pro-002",
87
+ "gemini-1.5-pro-exp-0801",
88
+ "gemini-1.5-pro-exp-0827",
89
+ "gemini-1.5-pro-latest",
90
+ "gemini-pro",
91
+ "gemini-pro-vision",
92
+ ],
93
+ "bedrock": [
94
+ "amazon.titan-tg1-large",
95
+ "amazon.titan-text-lite-v1",
96
+ "amazon.titan-text-express-v1",
97
+ "anthropic.claude-instant-v1",
98
+ "anthropic.claude-v2:1",
99
+ "anthropic.claude-v2",
100
+ "anthropic.claude-3-sonnet-20240229-v1:0",
101
+ "anthropic.claude-3-haiku-20240307-v1:0",
102
+ "anthropic.claude-3-opus-20240229-v1:0",
103
+ "anthropic.claude-3-5-sonnet-20240620-v1:0",
104
+ "cohere.command-text-v14",
105
+ "cohere.command-r-v1:0",
106
+ "cohere.command-r-plus-v1:0",
107
+ "cohere.command-light-text-v14",
108
+ "meta.llama3-8b-instruct-v1:0",
109
+ "meta.llama3-70b-instruct-v1:0",
110
+ "meta.llama3-1-8b-instruct-v1:0",
111
+ "meta.llama3-1-70b-instruct-v1:0",
112
+ "meta.llama3-1-405b-instruct-v1:0",
113
+ "mistral.mistral-7b-instruct-v0:2",
114
+ "mistral.mixtral-8x7b-instruct-v0:1",
115
+ "mistral.mistral-large-2402-v1:0",
116
+ "mistral.mistral-large-2407-v1:0",
117
+ ],
118
+ }
@@ -1,25 +1,25 @@
1
- rate_limits = {
2
- "openai": {
3
- "date": "Tue, 02 Jul 2024 15:25:28 GMT",
4
- "content-type": "application/json",
5
- "transfer-encoding": "chunked",
6
- "connection": "keep-alive",
7
- "openai-organization": "user-wmu32omw8ulzzutk6mjhtqgk",
8
- "openai-processing-ms": "760",
9
- "openai-version": "2020-10-01",
10
- "strict-transport-security": "max-age=31536000; includeSubDomains",
11
- "x-ratelimit-limit-requests": "5000",
12
- "x-ratelimit-limit-tokens": "600000",
13
- "x-ratelimit-remaining-requests": "4999",
14
- "x-ratelimit-remaining-tokens": "599978",
15
- "x-ratelimit-reset-requests": "12ms",
16
- "x-ratelimit-reset-tokens": "2ms",
17
- "x-request-id": "req_971608f3647f660a0cd6537fbe21f69c",
18
- "cf-cache-status": "DYNAMIC",
19
- "set-cookie": "__cf_bm=MJfUk.0TXdjtiNkUUqlUO2gaN3wzm0iHsRQRWExy52o-1719933928-1.0.1.1-0xk9gFxy_mD1KzAsKQ_HpL2pdQJ90D4B5frt65xU.c9k9QwD0oTBILqXB0rykXNh04Pm1UB1.H_W9sFJVOcSaw; path=/; expires=Tue, 02-Jul-24 15:55:28 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None, _cfuvid=GbheRct_iw9_I8iLWmt5ZRcLYZ_QVnroCrAt8QMVsUg-1719933928399-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None",
20
- "server": "cloudflare",
21
- "cf-ray": "89cfa6059bb9b68f-OTP",
22
- "content-encoding": "gzip",
23
- "alt-svc": 'h3=":443"; ma=86400',
24
- }
25
- }
1
+ rate_limits = {
2
+ "openai": {
3
+ "date": "Tue, 02 Jul 2024 15:25:28 GMT",
4
+ "content-type": "application/json",
5
+ "transfer-encoding": "chunked",
6
+ "connection": "keep-alive",
7
+ "openai-organization": "user-wmu32omw8ulzzutk6mjhtqgk",
8
+ "openai-processing-ms": "760",
9
+ "openai-version": "2020-10-01",
10
+ "strict-transport-security": "max-age=31536000; includeSubDomains",
11
+ "x-ratelimit-limit-requests": "5000",
12
+ "x-ratelimit-limit-tokens": "600000",
13
+ "x-ratelimit-remaining-requests": "4999",
14
+ "x-ratelimit-remaining-tokens": "599978",
15
+ "x-ratelimit-reset-requests": "12ms",
16
+ "x-ratelimit-reset-tokens": "2ms",
17
+ "x-request-id": "req_971608f3647f660a0cd6537fbe21f69c",
18
+ "cf-cache-status": "DYNAMIC",
19
+ "set-cookie": "__cf_bm=MJfUk.0TXdjtiNkUUqlUO2gaN3wzm0iHsRQRWExy52o-1719933928-1.0.1.1-0xk9gFxy_mD1KzAsKQ_HpL2pdQJ90D4B5frt65xU.c9k9QwD0oTBILqXB0rykXNh04Pm1UB1.H_W9sFJVOcSaw; path=/; expires=Tue, 02-Jul-24 15:55:28 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None, _cfuvid=GbheRct_iw9_I8iLWmt5ZRcLYZ_QVnroCrAt8QMVsUg-1719933928399-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None",
20
+ "server": "cloudflare",
21
+ "cf-ray": "89cfa6059bb9b68f-OTP",
22
+ "content-encoding": "gzip",
23
+ "alt-svc": 'h3=":443"; ma=86400',
24
+ }
25
+ }