From bd8b15a1141f47d238f3677801f232f482215a15 Mon Sep 17 00:00:00 2001 From: <> Date: Sun, 20 Aug 2023 06:50:46 +0000 Subject: [PATCH] Deployed 964c17c with MkDocs version: 1.5.2 --- .nojekyll | 0 404.html | 676 ++ api_multitask/index.html | 1117 +++ assets/_mkdocstrings.css | 64 + assets/images/favicon.png | Bin 0 -> 1870 bytes assets/images/social/api_multitask.png | Bin 0 -> 30206 bytes assets/images/social/chat-completion.png | Bin 0 -> 38518 bytes .../images/social/examples/autodataframe.png | Bin 0 -> 46421 bytes .../social/examples/exact_citations.png | Bin 0 -> 34021 bytes .../images/social/examples/gpt-engineer.png | Bin 0 -> 45263 bytes assets/images/social/examples/index.png | Bin 0 -> 30282 bytes .../images/social/examples/planning-tasks.png | Bin 0 -> 41305 bytes assets/images/social/examples/recursive.png | Bin 0 -> 36934 bytes assets/images/social/examples/search.png | Bin 0 -> 35756 bytes assets/images/social/index.png | Bin 0 -> 34724 bytes assets/images/social/multitask.png | Bin 0 -> 30206 bytes assets/images/social/openai_schema.png | Bin 0 -> 36416 bytes assets/images/social/philosophy.png | Bin 0 -> 31039 bytes assets/images/social/writing-prompts.png | Bin 0 -> 42662 bytes assets/javascripts/bundle.220ee61c.min.js | 29 + assets/javascripts/bundle.220ee61c.min.js.map | 8 + assets/javascripts/lunr/min/lunr.ar.min.js | 1 + assets/javascripts/lunr/min/lunr.da.min.js | 18 + assets/javascripts/lunr/min/lunr.de.min.js | 18 + assets/javascripts/lunr/min/lunr.du.min.js | 18 + assets/javascripts/lunr/min/lunr.es.min.js | 18 + assets/javascripts/lunr/min/lunr.fi.min.js | 18 + assets/javascripts/lunr/min/lunr.fr.min.js | 18 + assets/javascripts/lunr/min/lunr.hi.min.js | 1 + assets/javascripts/lunr/min/lunr.hu.min.js | 18 + assets/javascripts/lunr/min/lunr.hy.min.js | 1 + assets/javascripts/lunr/min/lunr.it.min.js | 18 + assets/javascripts/lunr/min/lunr.ja.min.js | 1 + assets/javascripts/lunr/min/lunr.jp.min.js | 1 + assets/javascripts/lunr/min/lunr.kn.min.js | 1 + assets/javascripts/lunr/min/lunr.ko.min.js | 1 + assets/javascripts/lunr/min/lunr.multi.min.js | 1 + assets/javascripts/lunr/min/lunr.nl.min.js | 18 + assets/javascripts/lunr/min/lunr.no.min.js | 18 + assets/javascripts/lunr/min/lunr.pt.min.js | 18 + assets/javascripts/lunr/min/lunr.ro.min.js | 18 + assets/javascripts/lunr/min/lunr.ru.min.js | 18 + assets/javascripts/lunr/min/lunr.sa.min.js | 1 + .../lunr/min/lunr.stemmer.support.min.js | 1 + assets/javascripts/lunr/min/lunr.sv.min.js | 18 + assets/javascripts/lunr/min/lunr.ta.min.js | 1 + assets/javascripts/lunr/min/lunr.te.min.js | 1 + assets/javascripts/lunr/min/lunr.th.min.js | 1 + assets/javascripts/lunr/min/lunr.tr.min.js | 18 + assets/javascripts/lunr/min/lunr.vi.min.js | 1 + assets/javascripts/lunr/min/lunr.zh.min.js | 1 + assets/javascripts/lunr/tinyseg.js | 206 + assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ .../workers/search.74e28a9f.min.js | 42 + .../workers/search.74e28a9f.min.js.map | 8 + assets/stylesheets/main.eebd395e.min.css | 1 + assets/stylesheets/main.eebd395e.min.css.map | 1 + assets/stylesheets/palette.ecc896b0.min.css | 1 + .../stylesheets/palette.ecc896b0.min.css.map | 1 + chat-completion/index.html | 3294 ++++++++ examples/autodataframe/index.html | 964 +++ examples/exact_citations/index.html | 1021 +++ examples/gpt-engineer/index.html | 1227 +++ examples/index.html | 871 +++ examples/planning-tasks/index.html | 979 +++ examples/recursive/index.html | 989 +++ examples/search/index.html | 931 +++ img/error2.png | Bin 0 -> 86194 bytes img/ide_support.png | Bin 0 -> 117582 bytes index.html | 1228 +++ multitask/index.html | 928 +++ objects.inv | Bin 0 -> 472 bytes openai_schema/index.html | 1711 +++++ philosophy/index.html | 853 +++ search/search_index.json | 1 + sitemap.xml | 73 + sitemap.xml.gz | Bin 0 -> 343 bytes writing-prompts/index.html | 1034 +++ 78 files changed, 25251 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 api_multitask/index.html create mode 100644 assets/_mkdocstrings.css create mode 100644 assets/images/favicon.png create mode 100644 assets/images/social/api_multitask.png create mode 100644 assets/images/social/chat-completion.png create mode 100644 assets/images/social/examples/autodataframe.png create mode 100644 assets/images/social/examples/exact_citations.png create mode 100644 assets/images/social/examples/gpt-engineer.png create mode 100644 assets/images/social/examples/index.png create mode 100644 assets/images/social/examples/planning-tasks.png create mode 100644 assets/images/social/examples/recursive.png create mode 100644 assets/images/social/examples/search.png create mode 100644 assets/images/social/index.png create mode 100644 assets/images/social/multitask.png create mode 100644 assets/images/social/openai_schema.png create mode 100644 assets/images/social/philosophy.png create mode 100644 assets/images/social/writing-prompts.png create mode 100644 assets/javascripts/bundle.220ee61c.min.js create mode 100644 assets/javascripts/bundle.220ee61c.min.js.map create mode 100644 assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hy.min.js create mode 100644 assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 assets/javascripts/lunr/min/lunr.kn.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sa.min.js create mode 100644 assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 assets/javascripts/lunr/min/lunr.te.min.js create mode 100644 assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 assets/javascripts/lunr/tinyseg.js create mode 100644 assets/javascripts/lunr/wordcut.js create mode 100644 assets/javascripts/workers/search.74e28a9f.min.js create mode 100644 assets/javascripts/workers/search.74e28a9f.min.js.map create mode 100644 assets/stylesheets/main.eebd395e.min.css create mode 100644 assets/stylesheets/main.eebd395e.min.css.map create mode 100644 assets/stylesheets/palette.ecc896b0.min.css create mode 100644 assets/stylesheets/palette.ecc896b0.min.css.map create mode 100644 chat-completion/index.html create mode 100644 examples/autodataframe/index.html create mode 100644 examples/exact_citations/index.html create mode 100644 examples/gpt-engineer/index.html create mode 100644 examples/index.html create mode 100644 examples/planning-tasks/index.html create mode 100644 examples/recursive/index.html create mode 100644 examples/search/index.html create mode 100644 img/error2.png create mode 100644 img/ide_support.png create mode 100644 index.html create mode 100644 multitask/index.html create mode 100644 objects.inv create mode 100644 openai_schema/index.html create mode 100644 philosophy/index.html create mode 100644 search/search_index.json create mode 100644 sitemap.xml create mode 100644 sitemap.xml.gz create mode 100644 writing-prompts/index.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/404.html b/404.html new file mode 100644 index 000000000..a7a2ac507 --- /dev/null +++ b/404.html @@ -0,0 +1,676 @@ + + + + + + + + + + + + + + + + + + + + Instructor (openai_function_call) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ +

404 - Not found

+ +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/api_multitask/index.html b/api_multitask/index.html new file mode 100644 index 000000000..dd1d32caf --- /dev/null +++ b/api_multitask/index.html @@ -0,0 +1,1117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + MultiTask - Instructor (openai_function_call) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

API: MultiTask

+ + +
+ + + +
+ + + +
+ + + + + + + + + + +
+ + + +

+MultiTask(subtask_class, name=None, description=None) + +

+ + +
+ +

Dynamically create a MultiTask OpenAISchema that can be used to segment multiple +tasks given a base class. This creates class that can be used to create a toolkit +for a specific task, names and descriptions are automatically generated. However +they can be overridden.

+ +
+ Note +

Using this function is equivalent to creating a class that inherits from +OpenAISchema and has a list of the subtask class as a field.

+
class MultiTask(OpenAISchema):
+    """
+    Correct segmentation of `{subtask_class.__name__}` tasks
+    """
+    tasks: List[subtask_class] = Field(
+        default_factory=list,
+        repr=False,
+        description=f"Correctly segmented list of `{subtask_class.__name__}` tasks",
+    )
+
+
+ + +

Parameters:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionDefault
subtask_class + Type[OpenAISchema] + +
+

The base class to use for the MultiTask

+
+
+ required +
name + Optional[str] + +
+

The name of the MultiTask class, if None then the name +of the subtask class is used as Multi{subtask_class.__name__}

+
+
+ None +
description + Optional[str] + +
+

The description of the MultiTask class, if None +then the description is set to Correct segmentation of{subtask_class.name}tasks

+
+
+ None +
+ + + +

Returns:

+ + + + + + + + + + + + + +
Name TypeDescription
schema + OpenAISchema + +
+

A new class that can be used to segment multiple tasks

+
+
+ +
+ Source code in instructor/dsl/multitask.py +
def MultiTask(
+    subtask_class: Type[BaseModel],
+    name: Optional[str] = None,
+    description: Optional[str] = None,
+):
+    """
+    Dynamically create a MultiTask OpenAISchema that can be used to segment multiple
+    tasks given a base class. This creates class that can be used to create a toolkit
+    for a specific task, names and descriptions are automatically generated. However
+    they can be overridden.
+
+    Note:
+        Using this function is equivalent to creating a class that inherits from
+        OpenAISchema and has a list of the subtask class as a field.
+
+        ```python
+        class MultiTask(OpenAISchema):
+            \"""
+            Correct segmentation of `{subtask_class.__name__}` tasks
+            \"""
+            tasks: List[subtask_class] = Field(
+                default_factory=list,
+                repr=False,
+                description=f"Correctly segmented list of `{subtask_class.__name__}` tasks",
+            )
+        ```
+
+    Parameters:
+        subtask_class (Type[OpenAISchema]): The base class to use for the MultiTask
+        name (Optional[str]): The name of the MultiTask class, if None then the name
+            of the subtask class is used as `Multi{subtask_class.__name__}`
+        description (Optional[str]): The description of the MultiTask class, if None
+            then the description is set to `Correct segmentation of `{subtask_class.__name__}` tasks`
+
+    Returns:
+        schema (OpenAISchema): A new class that can be used to segment multiple tasks
+    """
+    task_name = subtask_class.__name__ if name is None else name
+
+    name = f"Multi{task_name}"
+
+    list_tasks = (
+        List[subtask_class],
+        Field(
+            default_factory=list,
+            repr=False,
+            description=f"Correctly segmented list of `{task_name}` tasks",
+        ),
+    )
+
+    new_cls = create_model(
+        name,
+        tasks=list_tasks,
+        __base__=(OpenAISchema, MultiTaskBase),
+    )
+    # set the class constructor BaseModel
+    new_cls.task_type = subtask_class
+
+    new_cls.__doc__ = (
+        f"Correct segmentation of `{task_name}` tasks"
+        if description is None
+        else description
+    )
+
+    return new_cls
+
+
+
+ +
+ + + +
+ +
+ +
+ + + + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/assets/_mkdocstrings.css b/assets/_mkdocstrings.css new file mode 100644 index 000000000..049a254b9 --- /dev/null +++ b/assets/_mkdocstrings.css @@ -0,0 +1,64 @@ + +/* Avoid breaking parameter names, etc. in table cells. */ +.doc-contents td code { + word-break: normal !important; +} + +/* No line break before first paragraph of descriptions. */ +.doc-md-description, +.doc-md-description>p:first-child { + display: inline; +} + +/* Max width for docstring sections tables. */ +.doc .md-typeset__table, +.doc .md-typeset__table table { + display: table !important; + width: 100%; +} + +.doc .md-typeset__table tr { + display: table-row; +} + +/* Defaults in Spacy table style. */ +.doc-param-default { + float: right; +} + +/* Keep headings consistent. */ +h1.doc-heading, +h2.doc-heading, +h3.doc-heading, +h4.doc-heading, +h5.doc-heading, +h6.doc-heading { + font-weight: 400; + line-height: 1.5; + color: inherit; + text-transform: none; +} + +h1.doc-heading { + font-size: 1.6rem; +} + +h2.doc-heading { + font-size: 1.2rem; +} + +h3.doc-heading { + font-size: 1.15rem; +} + +h4.doc-heading { + font-size: 1.10rem; +} + +h5.doc-heading { + font-size: 1.05rem; +} + +h6.doc-heading { + font-size: 1rem; +} \ No newline at end of file diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf13b9f9d978896599290a74f77d5dbe7d1655c GIT binary patch literal 1870 zcmV-U2eJ5xP)Gc)JR9QMau)O=X#!i9;T z37kk-upj^(fsR36MHs_+1RCI)NNu9}lD0S{B^g8PN?Ww(5|~L#Ng*g{WsqleV}|#l zz8@ri&cTzw_h33bHI+12+kK6WN$h#n5cD8OQt`5kw6p~9H3()bUQ8OS4Q4HTQ=1Ol z_JAocz`fLbT2^{`8n~UAo=#AUOf=SOq4pYkt;XbC&f#7lb$*7=$na!mWCQ`dBQsO0 zLFBSPj*N?#u5&pf2t4XjEGH|=pPQ8xh7tpx;US5Cx_Ju;!O`ya-yF`)b%TEt5>eP1ZX~}sjjA%FJF?h7cX8=b!DZl<6%Cv z*G0uvvU+vmnpLZ2paivG-(cd*y3$hCIcsZcYOGh{$&)A6*XX&kXZd3G8m)G$Zz-LV z^GF3VAW^Mdv!)4OM8EgqRiz~*Cji;uzl2uC9^=8I84vNp;ltJ|q-*uQwGp2ma6cY7 z;`%`!9UXO@fr&Ebapfs34OmS9^u6$)bJxrucutf>`dKPKT%%*d3XlFVKunp9 zasduxjrjs>f8V=D|J=XNZp;_Zy^WgQ$9WDjgY=z@stwiEBm9u5*|34&1Na8BMjjgf3+SHcr`5~>oz1Y?SW^=K z^bTyO6>Gar#P_W2gEMwq)ot3; zREHn~U&Dp0l6YT0&k-wLwYjb?5zGK`W6S2v+K>AM(95m2C20L|3m~rN8dprPr@t)5lsk9Hu*W z?pS990s;Ez=+Rj{x7p``4>+c0G5^pYnB1^!TL=(?HLHZ+HicG{~4F1d^5Awl_2!1jICM-!9eoLhbbT^;yHcefyTAaqRcY zmuctDopPT!%k+}x%lZRKnzykr2}}XfG_ne?nRQO~?%hkzo;@RN{P6o`&mMUWBYMTe z6i8ChtjX&gXl`nvrU>jah)2iNM%JdjqoaeaU%yVn!^70x-flljp6Q5tK}5}&X8&&G zX3fpb3E(!rH=zVI_9Gjl45w@{(ITqngWFe7@9{mX;tO25Z_8 zQHEpI+FkTU#4xu>RkN>b3Tnc3UpWzPXWm#o55GKF09j^Mh~)K7{QqbO_~(@CVq! zS<8954|P8mXN2MRs86xZ&Q4EfM@JB94b=(YGuk)s&^jiSF=t3*oNK3`rD{H`yQ?d; ztE=laAUoZx5?RC8*WKOj`%LXEkgDd>&^Q4M^z`%u0rg-It=hLCVsq!Z%^6eB-OvOT zFZ28TN&cRmgU}Elrnk43)!>Z1FCPL2K$7}gwzIc48NX}#!A1BpJP?#v5wkNprhV** z?Cpalt1oH&{r!o3eSKc&ap)iz2BTn_VV`4>9M^b3;(YY}4>#ML6{~(4mH+?%07*qo IM6N<$f(jP3KmY&$ literal 0 HcmV?d00001 diff --git a/assets/images/social/api_multitask.png b/assets/images/social/api_multitask.png new file mode 100644 index 0000000000000000000000000000000000000000..12b2ed9b37b98a21957e1e7213df0b143ffe4bf6 GIT binary patch literal 30206 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
  • dtV~QP`&ErHG3xPI2;TWe1}~ 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 z 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 SbiX(_)UIe>F1&c-!G8gTtf5c< literal 0 HcmV?d00001 diff --git a/assets/images/social/chat-completion.png b/assets/images/social/chat-completion.png new file mode 100644 index 0000000000000000000000000000000000000000..5cbb8c6af695715eebdfc46a4b3070c965f9193a GIT binary patch literal 38518 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 U_aBCzkO81}L-TscRm(^J1D^o3^Z)<= literal 0 HcmV?d00001 diff --git a/assets/images/social/examples/autodataframe.png b/assets/images/social/examples/autodataframe.png new file mode 100644 index 0000000000000000000000000000000000000000..e167c66cf1afdd3a21633282b78df75d28e6ae85 GIT binary patch literal 46421 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 literal 0 HcmV?d00001 diff --git a/assets/images/social/examples/exact_citations.png b/assets/images/social/examples/exact_citations.png new file mode 100644 index 0000000000000000000000000000000000000000..7e343c12717e4638722c834abf0f339c2ae12795 GIT binary patch literal 34021 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 literal 0 HcmV?d00001 diff --git a/assets/images/social/examples/gpt-engineer.png b/assets/images/social/examples/gpt-engineer.png new file mode 100644 index 0000000000000000000000000000000000000000..d86717c08826fbbb14cc9272211686437d6581fe GIT binary patch literal 45263 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 W9lzbr{d^YF&o}75I=+wl`#%8e4l#cK literal 0 HcmV?d00001 diff --git a/assets/images/social/examples/index.png b/assets/images/social/examples/index.png new file mode 100644 index 0000000000000000000000000000000000000000..c6d97244d3d8d4f56c298bdbd88b1983c9f72978 GIT binary patch literal 30282 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

    3&-^9LE$i#wQbi82@@cwL<{Eu z?5yELw1Uz_QXy~Uv`y_4`?Z}fs`@3$i2 zT%CW6$bO^TFL%!Ao46Ki(dsz7#s~YXt)G}OR(2qpo3)cA02PK^NnoG2F>nrE$hY%C zM>vyR@f?gL4m!=Q&k=$T&ho8|&^Ch@-@i_{e*1OIz|}GGv)G8>Uj&%rkq2D>XT zFa}y+pBa&=)d!_lmSRWi$Gnh2O*oUi)|hkPxyBr*-xF_EG$>+eoZ2o`QwQder{y$| z7%$uek(|HaSwv+J>`;*kJ`yElFUdCwRlPSKnz0U>E}k+CI&b}%CeGxGRX~D*ZTJyv z1h<~KfkZXi=zbN*B^pr3(5ZGU>59w zlf>SgNorvJYZqi>4cp?pq3bHMh3{!i8d*+WNe158E)Z7${^972Depl>tBtO`zirxRQ;I{J{{ahiqABP%v5mWq^w}_QFd4dC-xgXw_ zb;lU4ecSL>2%;ZB>@alNfA3g*tMh?fE~EKofs3#j&jQfKt(|!U^VvhyY!54XylP zk1YnM1lr#nMSa7bV<$%iWnz{3M3o?E`H|bhK#2D3**w1vVwfejD7cNx1&A9os!S5z z2KgxtJ_~8?$j|@pIsd_Bl62%4DJh-RVIl0JSb9aq<*H^ak966atbsw-L`3*>9Sfc< zy02wbC*RU@SHFZ#`i?Vz+eb(D>5e~rlKj2tqq&GI5>B45#Kb%Zz5{tnD-bk5Xc

      ^01@|7-hQJYIfeyg$2Hn#N#Z7ljP?((eqcf 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 V*jZ~1Eb>e!+t|12WNV4nS2v{?ME-mAiSrQK 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 L=UV=iJ5T->QUMcO literal 0 HcmV?d00001 diff --git a/assets/images/social/examples/search.png b/assets/images/social/examples/search.png new file mode 100644 index 0000000000000000000000000000000000000000..93709beadb02d014bd9249f93d0254bed3df6025 GIT binary patch literal 35756 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
    1. dtV~QP`&ErHG3xPI2;TWe1}~ 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 z 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 SbiX(_)UIe>F1&c-!G8gTtf5c< literal 0 HcmV?d00001 diff --git a/assets/images/social/openai_schema.png b/assets/images/social/openai_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..0b5e98588f60c687f251b5bfe0aebb6008dda8d0 GIT binary patch literal 36416 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 Z2z(88+H!Iv$p9HJ>S|io@>H#!{tvpp#^3+| literal 0 HcmV?d00001 diff --git a/assets/images/social/philosophy.png b/assets/images/social/philosophy.png new file mode 100644 index 0000000000000000000000000000000000000000..986aa81f8328d7b080f5af0c55399e95e4efc8f1 GIT binary patch literal 31039 zcmeFZ`8$+v{60LTD1~|#LTHyQm3%On+^*UeYdA{yf+M23NjGT-x7>r5n z{ykk7>_{05cG%|_J@_9j#Q<{{%%5KE-W`3vG%~^0&uoa=z82@=-w}Y3>h|0u#vl2@ zXq%vsotKwamA7h>Q1L?`pt`E}E`zq|bz$M~iW5iPy}@n~TYZ-NSp0wNQYU|XEtk9U z09U>q4A;uwOInfYAHx2j&Zn)E|E%A>i~@r~UrI-}8xQ^aQ8C~cm=N@3Ep}Mw-%saa zU?=|lq;mPw;lH0k`~LUWpd0bOH{|bj`2Tc=pj){94hlm?WM#oj=!6-MmEC{G$(dH< zD`jAWpO{O^uKk~Vdc#Dh|IM>LPI)QAFb0)EcjSxTQ+I7ooJhDbj6N@Ly$CnC#7G`9 zDQ9smZ|zwW<6)sJc8*^n>XHZ6bs4*aYcsRMRKj`K{L|8U@2uaC?{54^ zZG3_$+Vb^+!B(S(2XwtDSLww4ti6+KD#7T)KzmHHY4G3!;nu>}uoLrFXS>KBN8Qd9 zf@M-?G8-wiA>>Wp_}2m?xrV%GrC> zBOH^;3=6%L^YJ-?Iuu5Usl5H9+_$Yj_+yH3IfJ_9WL-TuCb~Oc znyOOkSDaN~nrwBDmuY&Wik#ymiXbsvP6^4l#s3P{X&v8wb+LK$o51aya<0v&>Yavz zLPQZ}D|qrjv~mM2<>D@`jSlf={K8uKMb2ASaHPGZn1=QDpF?i6d0y>s)T^Jt-YDBnda~X{s}kR^7RDD&zR7 zFCEOgD`D+b!%SprYKXj{aY=jT_G43TZ|oM*50O)T zd5W@{K9!jCczsyDx3P~7&3@tp(_p)M#=zp5SLuGHlh!kSO|9@bUiLFN0qz_FW7yjK zZ`lDnHs7N=o`)Si%gZ&g_|z)!O?!L9e98lcn#P}noYwVTLG#@<^ap#Z>#gdVCkJXp zxUQ(Fs~;P3Rp88K$S|FoOF9Ib;Cg%dP6H{wkMozvkGVbYuevWm%ybK0pY(g#g9~03 z%CmG3EOl4s?dL9qgGqPUsx8G2yk;+A2XW#K?aS{B84ohmg8+pWRWPiPwpFc$uJ`^W>81_k0h;1Rlon_6j z2OS^7!-FDWIQnOg9m*0uVyws_?&(l$r}e;*<_``F_F&()-URHBovk0SL3`cG}AB zWX14&9W!j+!cIe@PjX+IZF0ZzHaMZ`?I#ZNO^Dpeirnp<2{YZ_$AxSaW={^DXT}Xo zgAIl+=x`)9hZkMyW!Y4;?8_%2p8C8 z$uCBWcQG11dY7#iO~U`B5HSy$OGJ~nuqoIj24#IdsZDo6elxVW+sy|Um9iF=3GqSZT{s}Hp6ac)9`?N;aADp#}k zFeuq>8R3#Pjlqhcog&PN`OV4bxthnW&CC8SG5K2RxF*qEhhG!tlvU{q!7?vPCz>|> zE+8H(y(vO-rw7M^NaM6zEXKt9&&RKI+9rpE1o%sah;+85&DX3lZ%F;FIM*W5qo%f) zd^&r0Ku_G!<@vjRzMSRaE*@#1XJy4Z>@EKjRDZ=t5YHVyFzn-A_y3BT*xOggvdJv{ zTP@;sUE>EEd#xJ-D=d4vbB)Q4qow~~GJBfknKR6}Mx3@@jWo#ndH!rbmhS9|Z_sPS zwRSW;wcPpgM?3~^h^}7SYnFGMOu2dOjhd!{l?M4onm7gcOtkPQV z|KrVgD2e5sGX26k_lDYsYG4zFxs~4Tx;o7 zw*yS0+^~;wALoRbQE!M3<_|teo&9-#=yNM8avM*=8g`;W#_z*7)}Jn>5_hjjUc8}y z{AqTIn1l}A^45J!Q$2d1Rjp|U*`3z!*|hzqdMDkq$EZgbe$_mVAbMv&YnMK60V@Ln z!3}sz=5oN}5}y_KmhXXq<^??a!%{JvY@>_5YR9voxK{N_4LWQa)9YN-!4DoqlGndU zbAY(Z)gq~H-?K1K#1JvWdBNP}+JrPr&(sI!y&jK_~} z6kuJ|Ua|~fYhOE3w`?~(g!{GoB}=OCb^d(Wdm>I_{YMpMfbZ%;9xA`FX+iFT z@Xw;ukelYdV^T$WqnkJq#~IeKBB?E0`c>}Ixz4$yw>(6FCK(gmyYDlC94h+tTwQO( zi(fDe3HFKTTrHw(-lc5N#fu^C>PB|@P|{vUoy2*uX!S{>YMVQJY_})QQD@&4M#V8L z_)Y5FH;N0JZgCEi4fHSdp8}iE{d{DGr==^wWbF4`$JCio<9}eG88%WdTx%ezI#=ttOZE7wv;Z#1ziX@*?+cBb|-a~5beXQ=-j8^*gDnHjKbtipe zeZsO#bFf=FE7%RA!D9V0D|eOXD81ZMXSoJ;QuWZ{id)3nDqvrdMeyNXy6=|jp61d& zsmbWWl+~#;ZY9?*QQs$=D&n<}tr&2^y0v3GFKQT+>K7YDV(Q(_0tG^lLEK`|ihYBThzb`iiD7ah%hL zQS**ExQw?fswuq_a?oR0Vw{R;XrPDUC#m#@Ze~>yw&+`&<{R(?a4t6=-#FHllJa|P{a`2N za3QTEoQO#jRVa{I_1D1_R0d-Cj$$jx@P+{>;ZTGDDU!0 z&1TxqfvF1!>PVS~V`)!moJIr5e0}4;P3~>U-GQLy>G<4GdT|H_k00X9dR^5Wv$?>` zu`pR-O84I7826=5e+~gm+sJECLP>3*MT8t=dy?VW`7QgKRcs5M9@?S(x?d328}GhL z$mriSBg{DeF+ID3kjZPII@fl?;n*RKd-_kxRI&6Ux_VQ+RgCE4cVdb;&>zu+&b-@l*Ltstm`!B#gCsD4wFhqC+=a)!TXU2eYc zS^xymiKONmFGHjnb-8NJF3!x^RdfFF!YysE9Ws1!?@jYlLlv}Z^TtRl+oR5Bt*j$; z)%Qbo$U@;qLI|xh5Q5Lc*VOudBqn-!&S$+h96tt7UQygEuN$qtx%rMrQ-wh#3RN{9 ztL_+Q=3YYebY_i&2Qzh%#T z?oI#a_g!12s)BAxlZ2w^VIkh@m;&dgUVYOOZy8xxjcOZ=?MLh7HZ; z@6d3*vn{1y^V#A<7TOFOH+w5d)xTdHo}^H^HG6#KULChF9pCRd5J2sGo4>b0U9m=| zevA*mAaEVZeODd3A`T~qBOm;5qU??aY*g~ro@bPFc2bYL7$<4j6F;udmRAz_D!rgF zBNe?BsAf_^qtb$@+l|7J`zI9~C2IMn&aejRYGi)gG1!fZ{(`Ib_Yt;8M2Xtvi!0cj zsC4QLbs+z;_+8;@ACAlEmmkJt=_wnydvt6A4|%rKX`@jdKw!(L{o4sQrA!e6dJQ_El+r?``(vP3AHVeJ z_CtT=^o$T&^z#0~ykScx=c$t7LssK*Pv%A_!#OSh&^}{RIvG$gUw|7gVn168zgH?s z$&|T#s~IurVT901Ih#0G#mHImjP2^x7dvvsa{k{RsZx;p)G^O>Gt3!I&R;naTDo_Q z(YD7XwK&Z$~Cwd^0F{%hFzi<-C=XIbi-zIFHghmH9DT*{T zX@F2uwbx$JWjA!$HwJ%?y;=>)X;i6x6w%sc9*#w@NEk_e!Um3;ugF_)``~I4ghlcd@(>F z`mWCYJ^vl9ayv370h-md8qaDCo-ZLLDGevemsGwchVdBFqf33})8km6@9UT3?q81h z>aejYrIGqRmlkA(I|UBHyegh~C?!*PP0tzov8su3GHR{7`M@qKw~7+17jMSm?ELN= z?}&hur%c{$cJfwDy!!>EyCW_B8(Urv9yr3yj1biy+amSLqa{km%?rf2WUWM9NSb(r zUxU-)i!15=rl!&DX__e7&UnynpiZpkpQWxtW9~d3if oQeMm;QfmIpREW1l)3# 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 vtBIR_0x*Al+nOJv^=m+W4#WRPcgO-YZ)>BEvy literal 0 HcmV?d00001 diff --git a/assets/images/social/writing-prompts.png b/assets/images/social/writing-prompts.png new file mode 100644 index 0000000000000000000000000000000000000000..1e679b237fa70ff70e3e2d3f0ec7c48e110541cb GIT binary patch literal 42662 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 s#dx4pVatjaK`#dcA>v}S&|PN$^-e(KzywtG zY>8)*oo!8pyQPp^&QWh#Tje$-e1o!0ecV!j77tsKQgphnm1G(XYlKAyx%dV@PxntT zybdf7BziwwlcfL<%TDEC9SvBcvOF))tfc`on2ZU?-TU_q=#rB&WMyRZ?YKG|Vgk2N zuqbDyx0a6qAPw%ejtTM_c>(o0UNsG$4|_9(%P8nrtLN#YGRJ^*8>CrE4GNaoC~)~= zAOGokUJe^*h*`THhjx1AUZDzT9zd`0SQ)%d32J(3#$RQP{0!owaYwPN_yA4c>f|Jv z*e_`rOL~Yp7wL8tD*|g-_of$*_&pQAl?roAm;~m99Pb&GF(yh0SRVuSq<(*c`OTYY z%2Xb%n`*KMyZ5mA@jP5&epPe+;|TRlz}sr+S;uz#Y3Gre-FH2-1iqkTi*)`tz!LfB zMfM;3c|r@z8|z0#fI3AVFuXu0iW8AC^38aDzM*s<^nQ@k6(9uB!z4kUIe_kJh&^Gu zk#Q0>%muc+FJCS%zi0;@--f(SX!QH{>y^c&(@Qhw7ylxp8=z@@iX_B$*2tdpY8jas zWC+9??h?;~zT4bC z!||p$9yfG+a4eQW{Py<7I0D>jRdVHv85JE^Q_E}yYJ&iasWqa#oofPBKVbYw5@GIhY8-H+`}aFd3S3 z@dpSdQ(fSwN;Tu(@fM>x!2D=5sz~d0K|Ew8?f(n655&t|2Kwf${~oie-CS=316!fV{!S_2BwXWBP=F=v|N5)-`IF6%%>@ z;+Awnfhq@x^#W*sAxvfP=orucscg5kpylh zu@+V%@J!1U+8jl@YWeuvhqJ-oN^=$Y_(0wO@G#edT2&AX>j-FLGPreF#|uAi^`#h9 z+cy{2S*3k0#%@w@D3kgWCuYl^@{H^G5hsE5svaL-fSranNUGYme^o&S%-;uEPXQ1` z^rMh5Q2(zUBhspYZcQYWt%y1x3nj>B*|v^2JY5E`85eG*Bj2L^a?O+bUmf#Ic>#Dzi~_`Df%kPrR*!7LL`!2 zlZe^ea>^kkU``MLNj=NsLIT&;V&3?JqfMM->v9yeY1zi3R)8h4?F;1=z*l;MzI@x|dX>Q4wkr}VSVwSs75~}l zs5Tu)jINUFdDU_Qpdf$P_}Nn+?}n#}}qcuKtl0V1IP;J7;w6t8JT{}i-W zOV~e;=7>}uBz59MP-y{@BmGv$7}}$tZYnSTtKMdT3(3AfOFLl)n#V;%4{Q{}OU{7S zM>SXyc-vE8a02%LA>BOyI04_BIFGBT7N|yA=Wuf;R(a0{H+KTAfO}fcA%Q%cU<5`&x-rSNC6yFwUh5B9 zCYJot(i`H*=jA>DEDOx=nLohEQ&p^D-0<|o?pr3fM+DH|zztqXt}tk+Xui_{_hI<) zV}m5%*0p=CR@DFs6mL8Y z4S*t5Fzu>2qEEai!8J@1gpJ4lb4RF*xBuQS>VI$W^q*S{z05j$h#+fu_!iJ9wMS>} zZ~|-kgD0Lir|I%WQ_wOB_wM64O*|$+Hb|)GY2GuHppB^h55m&pD9HnKeAXWY0Uq=C z$nBF}VIEcB?G%@cs17w!q;bGSDH>Gj)2f}efUhST6vAA<9)ijOC*LkaPU9s6j_m0qELU+TJYL-=+f=&>^0crk!*t64FQ$1x%#`#y{0(`KZZd zTfFXl6s5@MpL(7SdvJ8tA;(i==~wa8$1#9wYL*Es92i*gLX6EWN^F@`Xdf0BSAtFM zwdpjx$3i(>TBlg##Gi@>XCkEK*Ta{0?0}s~dlTHiqzVw+C0L8aNd@_u)TbYRRY4rE zxdyFHm%@9AedoH5raEkxvi_&h#q>J((%=E>3NFA}1N-qaxi6tM3aH$R%3(qCKsv@H z+E;?A{dz!?5?GO-4U&!lfm>co%bczk)kah$TnwrQ)s1kFT0@#BO(%!X@@%xQpH9+( zD4>}ey@H$pocOOJrt$x<_g+y^ZQa`^iee(DNKPsUDoKd~0xF7Dx%~Jioj6` z3IYNGk~2k4MHB(avB*J0awtNPq3F5K`}X&B_f_{@U;G`zG0quCvDtgCwPtvp-yCDW zU4WbTOa(&0G)387M5Jih75Cl4CO)ZPZ=JCEZ)PQVt!|%%|Bbvs$olVevE;%eDkiK8 zcXETm%{xNI*&GFT6J=${p){B5Z)W5lIMPu@COql<{nY*uamW=$MyMm3&JRB|TY?6w z3P`PMF{j{?jeHBL9Q1%nMl)nsM=YHONC$%-G;`aCd%K-2L^eHy>1o9=Exij@3~yiREy7kQag>*xlr zxSABnBtPBup^hAO*PyJvXf!iJi>r-TGGxMo+Lp9z&#`C1yUU#6<{R&0A|*yKPKDY^ zocSZ9gkf~{D%@kJJ#~x*@qTQ>nK9+OkeN!mVDFLq2@_4HrIF|3)cwO`MrUo0In>rr zc{pdXI=>}Qd?ODo%s2h~#-FV=jM>e%`_K_5dI0@l(V%FfrgqY_1_gSv8rp;TZ}t+KBpp9SNbOx4$Q=fR7n)okMj??hq?hDpjeOPvAmsE>E z)_Gl^mdk5e{`#P3I{CmQNTlo|?TX>M=g;$LoUO{Ld_on`k=7~P4JEe! zHv*h!Xetm^^IjnLgB5~>L_qk!aeO}^8j+YAtzE4Xl}~(6r#0M=4Cb&`l^Je6Q705{ zKD)zY6n$<|h%{_iGjLQ#1#Niz!mk!H#Sfoz=N<%f_M+k}XCS*uN`7lnL^r8W#35|J zZ(x`^f*x^q9z|ZilVm3bULfQl(93|nHgt4oMF_AK%E|@n``VvB*FzKZ?%1l`QFMI- z&G#)d5or~o5b|$pB`Y}xn#yZDYLK8g;=jB=44vTGRoFqgOp_uUnq4)|s)gYvTsM{*d+uK<;?7nVd^7@uq_oKs1{<0yulVmDv@I-m zN3JxP#hmcvKuX`B7IPd2f{(`P9jBn~Pgf!6>1z{5HmBdVr?j5lQT-)8xlEel&2=pH zE&3`KC%*mn9N4ZMtZ$tq*$x(%pYoa1OX<8Yug6(0x#W2z8*8{J$YF zVo-&hm0Mf;T42K=A72s36k_-!WI)?(@k*mOApPkrcG1U|rt0mT5QBTxOP?a>!2T@ul1PGd-eVZ=Q{JVn2vW50g#`AD3{__%% zIOTxqT}M|RJSM8z{!*i*gO<=*$ko!d80K|?_QcZH%v%VC>{7HcAox@PzVj`Q96^t1 zW0UkfVv9lA1jjBS&8)>N3xhN^28xA<5e|L;-25*<)B?`Wqqo*5mrCr&qKdv(EL3?* z(sN{Pqy~clFd4xH>iNwHo(7+t8FF4%Z8A>{QndH~D>keEUrI4>l%QAy;h7mroOQ9~ z`0dHboR2lfng7v$&iR05Nl4P?Wr>8Y-oO&l`jPP75|C=HUU@U4Q)7CZ=rd|11X#UD zp4zKQ&~2_RJ=&c7fNy1J1iIXhG175|%_~wzT6pz}Rc}X=sD$IS4+WKVzbCUK!A#L> zBJ4S_WL@QU9O4KTH2jb_|9uG?505~_nl(Qj$+BVaq`#U6D-uKejUhNNAxU4D8T_DL z*}ORzp$$M12<$)aH&v1P`@1n4V8(kFx73lmK37k3c)+1hc zxmBg{EY59(`vPXA89Wi9OT}DJsNiC~!8|%5hDXGoK)!op?l;CZqPbgSq5XF^?fV*1%aD@@PE5eRBkVaG=y~so& z-puEnA8_H-GBV_Y791hnGR>y+Bjt0?AgV{ajo`-bf!ERU;!Fed1ZCUn7NuV(=S~rE zf=fG*$TBG^l0sGmnmgdV$}Sw)r07mo;PSv@Npt*)NZ4-i2&wIi+kXj(nIE1^u$4GM zJm^zX&LxaOn=ilwZc}MmB^^7ou<`q@k^~Pp3Ol+v(YAdbkH==iqgkQ$S-IVNGS2-` zT4u*ZDpxtIC+Ij2Z`E9eS*}dFI;w< zdEy2+;jr3412`WSK*NSeKR`I4gQ(vOT_S^n7Z~?JJJ_c%nehE>&+MXX0Ens(i`tjz zz@_2ZD~pmWD~s!;&KQNcZxa7nPJW$rVDU%9W(b?CgYxNoh2{r5RGz+yhG?H#PYgVX z#0}%G8`!|iWWK1CT=??eaw^y%7hHUXQ=S;QNd}d^P5Ei(g#$N_fTU{uHo-cHmC2R- z8z_|!117+w+!wIc`|}^gPiaG?=B!|T<%?P3>Yf{Jl+7^*pN7NFk(iYSFXxE}x%tKq%mt$yB+yG#a5JfLDSq4~Q2 zFYm3NMjfR!jDpu>y2M44(&O$`O=8~2_CmKD|HF3HV(i#dB8A+T!@SH{SX;D%mqFhLd+%sD?N*`3wJYmtFUQ`{ z8S|%;_c_$YTZ&eRLa!mk`*pLxxZ}zx;1>-%{fX!p5wCrpBI9ZVK*OM0Zx||KxwE#uQk|yyqR9 zw2BD7p8wyqX6Wx%aR!Wx{}r1h&OELb0be*``^3dmMSmVhZ4_BV>j_rd3S;=l+L9=bVxW*gDv5u%UK z1@^%G7~h+2k%+x@iQ05f%0*F3fbznTrtToByrX_tWkTShF*cKfbkKOGea*dmBo?C6 zee4mxpic;nxTpcqPnNPM^xkTw*cle7@t81INU%2|(FGn~yr)r`N|=|h*v8*!J}3C) zB*X|)KdC+x%=mGF= z7vJ=lyaU&StlYX)lmBPiO7Zdc+)!0*p5&sB<7Ss(DBHCm8Nj!+h#nMMsak74GAA1} z(D@FJX7}(uD7b13X%Y}G*8q#c#)y1gJfbcX$9ldnavU&!`LxxJxN%o}W~pEi*&^U~ z*^o232*HPkt%NMc-ko<6;E`+J-s7SIMbttJF~2Qyx!0m^dr%c@VhyLKI=+gtVmaid z$c5n-LO3r8@eP_F$aG&TwUCImp36jO#4=>KsGCe`%6s z89!eN9lPMR9WGjil^2o}DA3^!tW1m-EZRYrCC&2UB_r*IuVaM4-1WzxDvSb#r`jlB z5yw3?uOt|*)gL6W2J?oZtTzc8FAYP~5xruwX6TMv`3R74D-p7+h|`eoH{7r5t2JTJ zaDk48OI=eYlzO}d|K2ls0w%WB=hed5<$r!uNfqG^5ziaHpd}?#OP=^*iTVA<#K(ub z`slP8#pp>_PW`pG=91i4Qg&sqWue$K_twdr#JQBc=(G=tlZOrGWNCf1FRe-NhsGuk z@8)nDE?Vc%$1|sj*?e6_fV3d`#Q5+vPSZ8|HU86{aYB63f`e4^%lqHh50K#_WVik{ z28-QZ@XJ;H)wAT96w{iszIx%1nCN20$?3ibiZ5S;!0axdMvDzkb%UdXK7Muh%mVPg z)PXw;CDI?_TFmn@cc>XCQLg6(nz%~>Y$QMF_1DqcgJ?0vMLuTYz%{DbI!#Fi>pr1l#(G+F8j~Y}fa;MJ*Q1EKC$%oV*A@dm*AtF((By`@ej~zaF`8@bMSK9@= zb{C+M(Z~si4JU}!5!4p^FDtU_`&GuE@`|9fmW0)_lM0`3bMriTa+*_6z#pk8zI50pskc4 z)W6$PPyhK+>e%N3zsg?)Sdjgrvc}{2j2T|<>L?jw7ba=*s=g7ptw#&8mBn0yQ9kNL zZ&w~df2VK$bHPzogAiDr%)b3ixUf17hU==LhhU*DJR{T7a}5E#{1arJ(5?c$6`(RG z&O~&eEFEs$=6eiWV1W7M8DiGJn}p>(f%J_&xCnrM^T~>085lUfL^GSX&b71Z+biZx zxcj7!j9_Y5bQZk$0J{j%YFg0*Hm?fD1n;9jvaDPjVF(fK!Pz|SKK@v>&8kbpiw!YB z9zFKOegt}Cz{wntkpg3Mdw1&ThUeb*QSMyMoJdC__DGHs8Xz(MFHkeItYC!v-I3tM z69a|n2T-BRm)*MY{j~2VSJt>p3Fb2L|@9XIO&S4Q*S^W5_sg$yv-6x*A z6(2QwO5>X!`pnzpAjU8_T4E(;JwV=Pc|4pL)*E2sBk3*wmPbPDsY8em%}E0BCytB13(ah}jvse$aB6Cq7@k3c4`$AAIEgoMRn-arBx041!tLVKqS}S;15f8>kwIV zaiH82a*A9b>s)nRkHDv=)i|KJz<^tsU*C}?&LQ*Cd%pX&VXFU3!YXjycPyr7=|w!g znt+1(ihwJsm81%K4v41{;0PXLrhsqq-uc6hEWd`iHs(v?X1?IG%FAST>Du2p5Zh|M z;Lki+1NYJkJY&_uNMdK9mxb*VK$DO9HG{~(Xng+t2#``YR3+SXcZhEy9dztMN{i@uY^$-&T z@o=aqyNen4Cs#c@BbsBwzd&CV+N6$y!Qs$f=j0zr2U4L&pf_|Oi&KX-=>kFLxHOeM zus8?KmqSll&`86Up}xQVF}LOwg>b2wJpcufl1YCWD0x`COP`wg@Q*&n5ZXzgRJiv3Sj94zm79JWz&Lhz0{6I`MqrpKUsIFu0bEQm-D!v0)P4KTfrIdXScv%krwpH(U zIwkz;D04P;3Z;41`^NU+uzxrG7(7VA&)cer_0Yb`NGrwKVensSmJS$&IXl#HbDjLL z?)z?C4cUJ14-w($_Ln{9rYBe1x`H8*_?8J45q__rHyL96lLe^#zc120^c_#3V@drr z&meHp>iv-QlVdIKr(%SL_0BH8pR6u#dG6|jV1_IfJ>fJ%9OVsSOWu`s=tYL0K@NdU zT88zp$q)a20PMOGo<4z7&O)&QbLP`qsU#|TIR(-72ivh1Fq%7er*p+JTi%plIEaXd zgXy%qhP2eObL6{fI~d00d}kIm9xg2HYo5u4?X+e3Af7q_Fq_a}xQ&}7*0ymDntIvi zPpnmU1hA~Fx!Th<))@~?kw0R!}#07?|qq%%p0TE#N7i-sEZ@QuzTm3H-pB z0d8sLKlN5y4UG(*;*7=Uu@|n+`pFGL^1RUOq&uO(a{eRAapYWsc#W5-&KJm4q0HsH z7YCc=Y9YHi)-nEbVQKdRrksLv<0M+r7s|^@T+DS@N`k6PVDA&(;hVx5Vf9bEVny_} zj7E)*cf5OEl#L41)NOX}en-UNg2^v3Jl3|s5Al`_A!0=}^f(=EQQHQqgC5tAustFs zCVwWo_sxyacLfcEu-j846DA#b1~u%eG7{WvY29R{8x9=k-zj zdR>6uHxR*a{MW28h4y;-IP-@GSwYBTF`0nkh87deu<~rz24x%ZV zzQ6b5#Bk=hf&S6XIPr5hJ1`JdZ=P{OHT6D$aktv&}aWE`wc5# z;*8@dLyA_lluLEJPm_<7WJ!hfG|jK}574m)j~$&QT9OY^jqlIHr}IXw@Q;~-R5(+g z?u@K0 z%J5R+ufETH)#p>RK5d7c=(xmW>bU_^e5`FI&g6P>VUVF+S!qS_*crLh-yXTSvnU3- zsoVn8587#dEqDt^X<}A8f!L!e*U${qAB%KefoNLc{RW!pFSQW4Xc&jD&qaLhJx^?1 z6qpb}E^KQW6Yusaa>gtQxIz8e2jLN?%g1e~=nwDo>qCW_MB<7Qjgd?|FDqjN)ws#N z=kre;YpcTk#Cmm1Qc=-No%^@Fj7^(q$aqa? zGw8H@c~i*wYerRDc&0Il^|c^SVD>`AWu`tSgqd8gyFD>gJ!dMDSupN&13<}6W@EH3 zOf`ESXjV4wZeA1VshsK@3C4~TwC#F{g45hUSYOQGcz^TUew%G5wnOsk_wYG09noT- zR%Lwu2XiK9pq@UOD*5;C?}~ET?pbn9DXcCm_s0S{1YuH(2R?WeTGlWIf*^Ig%A>Z_ z0WxK1LT-CW)g@h~1Z&`}ace@-8Dcb?aEN38>RgB8R8o9>K~&69Db)utRnCMkmFX8l z`E1i@4pQ<|Ot55`X9Xrn_;AlQcB?zC@4)NZXVxSnXzIK#BG>yyUvUr|;IOwqN!6$J zEhvAC7*9l=0dgh%NFG8P%E+O$9``olD1yyXR%Uy7v{ewv2jZai4t8~B>~#_QmOtix zC#Z|icZM3HhmI^==t_o2kZ9O_Uf5DyLt>Y?2$G)$Yw)DFt{e)oe@Nh9*K%nJz9wI{ zn3Pu!cTuQm*TMBF*cTH|C#>|eZ1PvTj{z9FBmQ&NFu%%;VD&wMsaJtx0s)iXuC@Zr zN+VLav*O)D{Wh+q(i1P7^6%?Q+}x^`@9r~sXT14`%IbJO+}*{g!d=SOzdjGGe;(8K zD(UN85)Etp*mzgxYMXM)mhYr!w&)S2qKONq$0+RY1+j4c__=h>Ps-urdZka|wE-WA z!^NGY67O(Z$u>kvfK*^`EU~$e@je9y=IJdA-pS2h%;ZnXK z0C7)|%ZQU5{#o(~joidhVhv-{9kl8Ba@_&2;O=)M2rVYze6j$yWRms0lxoOI$e)hX z4_>^H(dshHOS$Z}waKnU%tC$DY-HW2zH->eh?wJnpP@w~(F#{Ah&#n>zva+)JLH%u zG6`Ls0~l{c0fFP<$05-CcCS!S-x?ObM8xiaVTqsu~22Z{PnrizM1MZ zS<(F1`0NHPq?_`0ozI=~f-lDCoN0VBp?mC4?@Fy!9^#1!te>mW2ATpMq^d~Gjfxs| z6pezqFnfR9#-|=SEy#e7*pBYSU!amFq zW%)_bmWa^2Ah6EJoYUvdRoAn;T>Scpp{OW%`zLct7r>NcF2+!UYzlFgfS9A$$)lRS zs@$sccFp*4cD3OZss{1D+qGtyD7Wf~58nmlg@81C#WSXH%g>pscZ=QN- z_C>~^lkrK_p>&#q?x*G{E#}+f;~9Xe4gH7<2pk2|n+jd#XJ*^c@lo=3fx5a{E6To3 z`JXU7OlLEF{2v&Zwy1-CMXg~q*7QCEHURj5p%q&3qh7x&EMA?{u(Nv}6=!|GI`)_> zuk@kBCYd;YWr{kVaLv9h0QB-|9o{1pKbOuw@#gv$f1ZxlYG#)bPn;}-hjSsk5V zL$1ftpB5T++WQ&#RClX63P>Wqum}uA*)U%@+jh0Oqus&sjwA~;FS>ing}VnU%-ava z`SXa-+TvfprAsgn?n#IHfhaHe>df=`-PLlMx6lLb_YP#k2Ha?kWX_!bHCI4nGMY)1k!*9b0U0@g}NorYgY*>VfG~&0E*?qDldY8iK@+;Mpf-o571Et+-Ro0j zB`eF!Ky9~Hyby;%O#+1=dy{51ob`zMf@|G|SHq!hp%rbTKqBSSqb z*X<*_BB~!kc_0b{(L$6j(5HI z?NO}^qOS$eBc@XgDxnj(uJf^GqqEU=_1SdSX5mKN+5G!n$IP;PeaWO{!-nI3{NlBw zfHSvrKAQr21Mz}?S(gDhY-LDngiTh!H#P)iP(OdqdO~BaWA!A_os|4{-M+xH6LWUc zNSEEH8jyws1#5wHtFcd1>mi8?dL%!3#_uet7->x!n?+cl;F2$4NJGW8yaSk#=r|v} zn)N?e(|ytj_(%@{}-T$2vv#i>G<)N-dBHi#Chs$a$-K)eF^s*wa_1#vj*!4#VVHJ%u?^kqj`;YjW1g{5v_lunjQMS3{N@R=4e=3kUIp~p z%kqwRzCe2VT+N?HAes?vsyoUAdmyLnl~~b1s5H3G!?30;Vt%p`IT@jvH(-tdQcUE- zny+t6QhYtqo&B)}Wcfn2*%57LFu3ph$!(%9LPoueGFQf;n-=ThfWD5fQ(Je=NO!Pk zg@X1KSe=OCInfzuivSIw#oDoT^?1mt7mgjiF`K=Zqs95()%7Tt+~fc56rcnf)DGZ; zjN|hupK@Ljjy`CA`7U~=1=_ilzjfm!YY|Q5L2P4ySse?)>_C93YouM4|InSwJpp?g z*EIq2!3k-!_vXC0a}2?B)O>2E28>NcKOfV@UOKgjxaY>$!CQiWXYe9^$T+2C$G(-j z0-iOm5~hTZ2I$J;={F4z0T3+5`V?Qi*ZjF1kccNU13Z8ou-SQs`5Ch#Av#%}TTZ{A zv==WTZZhjtm^Ls(-U`f*2Fx4g%$y%D=C_?|>P`}UH$0n93h5P?mJP%vKp>b_JG@=| z36p-l?D=tP1~sL>-qYBdUoSY+XjLjHQWl+`>rxy9wDVWdIi)-%+uLk)-T(Dz=-bKl zl4<_CJ{ndKB0*>#qglDWf^{~vhsBPR>meMLY>^h~z?poBnS8pBDaTB`KA7pXd4!2*CM80s^ zYT|vc=`j5ze7x4yYbqM@J#Ot6tA7qgaMbf}ZG$&lo1|eofq8H;lZOE=mVd9^0dHt^ z(f58k3_wMg_l8NO8o#H5XbPGo!s?f>t3Jnp+FFf4Z_Mb(`# z>%$M^G*_bwrNS% zgQKdfz`h8sVOkqAlhOw|QoE9n)VOcFiLTr`L;2zjj(eYwnb`JT!myi5YWXPA12vp(hSesFKgUp0!O2N(P|Tb@N_%E&Kx91Qp|} z-aZ#?terB=b**bd3ZTNLD3Rx*`um0jYug!xVY7Tf<3rFcxbIJC1E*4XVS-&y7;}aG zUm}@Gz!R9=abatww=Pp`S_yVrFfa$RhX~TpDnbVtMj-$VNE=E;#bAoC&IKAjIbw1?GG$65ohPS1fb5PS?dP5!O z^4e;R_OSGaKVX6Z_>&!HTeL@NiXQ5Ipa@b|Gz*02{!8TL%uLE~`HmlA8NkZr9Hc}0 z2!6taA492C4lGLo7%qNs6+l%e)gCXggM~O=!i+I3U3xKH@>>R6FX?3Z6Rzgd|E?x^ zI{`6um60Kwi4iFF4ypwjmdOM3_Y0$m+Jazi2f)>o?UO2U3&JlqMD#1@E>^h@0;#&U zD714`^TZrPi?DaQqE&rUd}>Pc!S;^Rw621oHBj5|K&v8-4g8|m8^Hrq#;=x;^%lM@ z5aRQd7*9T^QCdZ#dVmJiy+`8A`h~n*5wr3%97f??C^mPiK>R6t1ZqK%5h_shK~jJ) zG?ghS1)W|NX3j*x`HM)48&*InHh4B)end;H4@dEjWp)0?-$-FXz0C1os`IS#RRLR| zrvSI3VRHNdFMKE##-#Nw^rydVEZ4I^ib~=K^H%=;bd#4lX`p27{x`EEO_;WTuZH1{ z8Mg8^w}FkP=Aa+RhSvu0Td+_f42U`{dnR%&o)COV!VT>@6~S#F$qo!LvLyrg4e8(0 zx%=vt2g+v+MC}SxR9eg4nx5{Z-h8v{!g~dUlW>sJCNe~xWvE0^=j8Y&N2B!dKp%`W zGC2~%ng7o$briEtsShZ)Jrf)S#GH<&v->9|0NAnIhLmO($&QYDVcb+=2vJ)~@X^@& zeAwMB8}Ai2C>q*Bkd#()nXraBRjz-sAzfW>pDC=K@kwR_OrX9&q$Vkt0LRHV?IEc%xUNnkE z6sU^~?YNOL(EJS6FfHTc^9TX2rQ-gVBjfiQfN&$`^aFj5JYMQ@(;rvyi=#IXm09h5 zAE*q*A5N1T9e7P++R1L8C=TdeiR>bdsjV(mU||>=MvD<#6ZAlEc=V^GM1lq9Q3Mcp z8xOmR5iS7+QsCGJ5oNPL^atdG+!?07Popoc;(5>Nrdoo;qBRuXwDbD_p#f_Hr zGAO&m;&5v%1($XwTx|mZNmW5lf5v8~c0WL9e7nvbHdx2H&i4cdQ8D~aobWE!+F^5T z*^(RYfb~Z6!C&wYV3lx&X&@UXb~lhgyz?-H$Yl91@SbU)e<0=amc@33*|mG$n~QZ> z>0%)IXrF?ic%Utm)6*Ev;(u`mn0Abu&Hy0ZfmEIrK*FPCGy%OFrw;B5C61|kNyG8~ z7n25zpj@ljk(fw5<5R7ZYdvw{Z(Jui;^;@{&DGBBexNL^fbFYhC!Dtg;B&-$m;#9F zDG2Vt%=;bmXbB#0!x3d0w)0dwR6+}{5!1Ha-Z{UBQ+ei@3n`uMs$tsTaZ$sh{+lz% z=$n! zzb-KS5%a?kt8OkJ1aI*l$7_qF@;2<8kh%<6yr=VbnysX$lb>9N=VnNPKn5Ey(u zPv&8Fd@7&AJdYijPwJE1X*9QQ<-(U7qpxA7n$2hb(!jGXg#D|$X+0gZ^VSYIu( zH?8eSAw;+Uf(>ysNNAU9(j>$sS3FH`HC_9F49cQr;kK1BgK{8(ghML)P7`#=jvzC5 zBJC={Ra#nspX6;r#u%w-5Vptz3+`SEIOzS!N9kz1zF`jq1>n82FMQdHjuGQmQ2snS zQOOWHvNcm^&kf-HfqYh-2e$xnL1C+#Lphs<43#klUA5E-vSR*Yl-l0+j0}^UD>b_KA`V{NCJibr3K?0RisfVNy(3{T(Z$L&(P=53>+B|RU7P1gF|vl6zJ|Ssv5N0sXF&6Cg?K}ow|-PI^jzL zGeGY!8pxJpt2H8naxs{$37w9PI?r};@}i!Jz1w)a5?GcA;k zg&`}@M@S!}nq+0x)=mI}w(pxmuG%-zmrjc)AP8pMj;~L*6b@Gs4(mtL!M;X+bky+@ z8I!}rFSQkhXqxni&|KF{YLn<(JG>`s_V833<=fkWDq7#6?UD7S!$1GNB7T>UXUnGp=@Aw;XbA{wC-5>yi17`~ z&E;fTV=us@Iv2^28)cGV{K&_i{rAegfnUNAHg-XPcGoyK=QYu=xgIfs^TXZjVJ4X3 zoIyET{@_lX~d|0fA`iO_|1F|w9-9VB9E@C#Mb*;~WRpcG>0ls8XHVVWx6^Cp& zg%D@3!XiBznAe?x=!i8`y7(RLCrT^a%nu&mG9W>fL z3qx$!fWx~ixpS755utial{p~8ga8WDfJ;pAd@}2gj`DvPqEhX-@3=Q+Qk% z@^-{(A%)jLf@%^tl^1ZUwA5B*3!wNE^;WEesS}9thC7!hV%4TUEP~4Ypg{$=GJBX< z;v^%-Z{EjkB4H_#$GOj7lJ2rH21YCQ&Ctxsgz*sS)1kw=ye@*oW`AK)p`Q0)Vggu( zsAwqvxHX^2tS5}nk?u0E7-4IrY;l7&Wym}tNPh-wa)2?o+7B@(@mNEBTUMxu@3Aee zb2>R|RU*X4j4#}4Quyq-bMLVEY-djlk9}9Oe9~r|D=~!9Ee?%LUscy-$u36G!J zu^N`v*4(8@R||hB4qaQ8yLyfD;xAeD&BMDbpFXt+Ma%H4xz!rDRfk1;zzABAow15q zkvSKl-@QMtJi?1e8nSf6N5FWF2VN`t#Wg&NWn_#Ovj%;f{F%!=QVNS+USXc)WMK(^ zdy<=;@1~y1;o#Myy_s8;8y|kw@SxD;&N`BFIR3O7JFR!o81_cGs@74Ryn_V2blVQY zOvytxB{butZm+6T2_DCf{1vo*IlAqTm>@=Ta&aiJ$bCL1cbh6)=KT5Mo7^`Z3%ASn zSk`_^sW=wQKz}qjiwE7v??(-1a}?DE1?DjnjuL;5t)z^3zs&wo)3oiI%l-gP(Hx1r zLoGv^blqN+NBHb?9?j?9r`2>yY94bAGHY5q$$j)Tr4J3r5!yNy-ieq+j_gh@FHV}_j*84Tr z>Hk*Lx%}c{V)c@f`9JEcfzqh$oD(0;?(|s;r)Jkoq)8s-S|&^Js?+@NfZ&*i`&7Q@ zi!!;VA$P~?M!gTm{G%M2{uuXCO46o&fAEo>o_=e3PS|2*jfwF6Ku))2I4q)MuY@k>s7t=%R%K2tJ^IHsT>5FHx<7^pUF?Uet1L1gF?fAuRhz9 z=1+w~VqyqWkO2jgKDul!p}RSO35!mkL%%D3Fz)RTK+P?lR`_AWfM>?PaULf^L{wgU z$N!>TpP*_uR`Qls7`|0^&-$%qM+lYrQjeL?FVmtnl;BcnY@bKb*J@OgWAm4KvRJv2 zHOl5^MYk%>ZS3rbFi~i)i(sX$@NoO3;O~>jo^xeP-7Ds_!!> zIZ1aRr6r*VRHtSytl77Jrcb`I%(t9Ols!61meMKRcMU{S{l-m?315?VPG-h{slpBA zn0I`Q%$bV*{DE{w-ODSPoJkxc2OsgFp%mFuRTiP~w_RlI^KHIHC*@2jfA~oLJb65? z;j|fkxb?bM`F#GO{wcZ<-4pGqCNYj~RW@HgCj}Kh-`n4xca|YMm)!_RQ^xb$W|61*1f6mnN0Pe#+w+)8>{zl=Fa8+wuBAC|X_n zNv_S_;)7s1y4+uOhH;sw?$X2a)d%$_R>m9(8>Sxz94urT(tkfUTp$~Cp?^3)n(6kv zM91I@}g*k4PPzlH_al7G;Yw#0w%UU@}9Di6VuFNsFWOF<~NuzQsVEU>!{y;f|ZNZ0G zKi3*F65?&8=w9>cNn-qd<1D%1^aM*@&p;g2%7B#12ue=8qIB!=!~owM?kM~%n~ckZ zs8*S$(|5Lo_&`m|=G9WC*=gfm$%%56`iC0UV>)Rphvxd(a~!Xl7n*pn75Md9vO9dU_Q@GnTu4+br?xc_c(x-F?Zw^7dYI$fSU+z}Vo;B-`S zq+6?@l3(L(3^SYLpFez|UeqeNNnne=%6)*!(HX+xQH;y(mE@*q~(<}n@S{Oa+{UHiC;Vd z!s)M*jq$sO%I8U~#>dlB-yys5pka6ti+GvLl5mv!%<<|!Vn_ZQ`@*(&WRHtY%>3bp zo?qMPng85leNwANqo~P%np>vQQ$B}FB2DPc%4|(;R%N}(o%9$)HREblt`zEgkFfuY>UD4kaP&qy-A%*3H??6)wG|Po% zZa9u!x>#hEnw18#4!m$RFi5yz?T1pxyx%dShJ{;h66=vuL;Dr4y+uN+JVl?24NKCT z;lyl#y%Hl$`tebxos0^hM%8_(x*FLmUL<Feln>2~8>d>*7l;p5tJ5osyC(eR zN|&N&Q?NXxd%Y1y$m=e7WL@iwlf3aURA#!l3DrqPJYy-iRD%hy*deHn6xD8l5AG3u zd3v}|t9`^HUj-b6y1-SS%P;Y#WGzqjUvy$ zFexUj4rY+})ARG`z)HD&SK_&Ub2dgzQ~&kuJY7e*$!E5OTpEsSLzPb&wl{kyXsqx< zcRS~7n4EUTc5xn2a`riww=r`ZvSHL!lASHFn%-0CPZgJYkaQby@A&4gM114}G)quF0ITj2k> zS-lrkog2>*OT{fI`Lz4`&F-Yn4c8;eN~*9z+6_#sw}h>3IgkjBOe^X-?TpNxv$%Dw zb5gF&l1(P?e5d(jy=-cF0BU2`^=NiW-+DWCNMJlaF;SUw;2T4az*3fX=WlFJ5{$i^ zkXRAZ%7g>BDKr?{F__x=(n3;K%1{q2j;(b)h=EF+oy18k0}Y>2KCW%wo81+Z(o$;C7s~C^tTjK}wsJY@dVTC#?;&!tBjo6suxGCfv zq>5^G@`!on()Ow(2DyoBndQaOlU{Zait6#0Ya^e19=VOSZWT2bn(&nnw#)gIFL`%P zV)i>W-iObHFkM=mvyV;oSC850&eBLu+1QEeEj^^%A2t@@i&cn$HA8XyN-Fz^x!f#; zi@GR;T7AJIG)F@}j@4I9Lpl4fn!_n;Bd5l#?W#iMeFM78M0n2%I|@8{HDZa?!irNG z6}mqNHtrMjg9~*!DxFbsGUc=tJbdEE}6+>*bZtmbvCyGAlk*iJORr`>5NtwM>~e z*-%qy;PJ?C%Mt?4Ug^s_ilzkVp_aU4|M_sv489=c-PO<)%P9QM zA~*NtbcU_w+SLfo4&fW#-V#7zv8zyU35|nukaV$XU!$h&8_n_l-+%bg(w!N!QOzsx zP`~ismQK7@6P5z0$mrs1{%}Bt$w*;x(x}NfG7(_~bXuup-xt`@J2Tl{B-Zeh?b-EQ zic&okvf}A0#D-XKiX^|h(*II)==Yl!^!K}8H|%XN>~;QDm%|aJeK*%zC@qmx zOjS3wvldBmJH&*kR^+kTxubt~F>W8G{M+M17lR!dA}&c?kLc|x_*I9Sm{{TK)`9J3 zaMB4+Nqpv=XnF{Ew5=PcT$X;S9>ogNX8NEc&Tvx~Nt3>}ld$1KHYeGz33K{rEMqrH z$kDDG-lSz`3w?uwK3R_+eJh!)?BQ1^XVA!TvSh|?4q?Wo7DhMdo?cZ_x5y(H>AtIh zzH9d&qlmkNF;&3EF{p^wXC+RY=U_Ehw@q*MTKN8|`^q^lEE-g`atshkwyWE}0y$El zVsNl?bO-xsl5&H@jySLEY=#kiGW2kCmcxmt*+Uv}@$LDvzvCq(Le>)#1hPSXUMpqC zl-gE3wyhO;mp0_>+T2lJ8fB5`o^K)|vpxM%H0DKt)z)k1eO!fY3*Y~IF4%fgR)A(faNhl05BWZ{A=o?`bWy7?>3N07>ku|v)RPkW zExW|m=^^gZV|J+`&wGZ<2R8&)LOr#r4!^EeJ7mbSHy1zBJP{s`H_j{9<%nOLtg3%@ zr25(-n4CpC`O9A;AmXQz>9)p%&?Ww3C&|Q_H83dwBXn$JHTC3uNyyJ)2~r`-(b@_R z+r0vBS4Wopf_tsKNuwAy47-BTF-k7Gxs?-D;^yHm9sCbipx52Eay{o9Dij`~E8Sx? zawP`|0c6gn&a60Bv|9}2RC`yW;aKg~JfcUEf=hLakDV0!R`(w^b4r#R`YwdTpOP9G z9fV|Hu|=k}<9%P7UV9uAvtCYM)U3*fH%v-C zd_4DD#dBw~UT{fKa-dIiA(+s?;GXRh#+aP066Pm}dR&|`9+oo3`1GnNcK@ZIfByEb1WXK2lLW7)U*-+-@YOgKe-!r_jE#_n!TGaTn5h8%@?C%M-x3#P}k&(CV87<4% z=@rXJwIG^+-Mg;)wBf-=2~P^ko`UBIh%a$y5jctyBR_FMkp z9?1}^tqjfW2P%{qYV(DShl`%Mb5Ch$^`m;fhPw=RJocg_#I1cig5}9{fw32 ze+HpTVYkle>-2ejbE}6xG(`Q8-gntn)YcysXLD-qmMiJ=ge?9-UED;n{6gWH}@71L%b+n!xeh5aOq z(htsNr~P(qNc?&^XExH}y{FXl$G@vDeS}e$Z}Vtb(392GqjdP}Je%&A&9D*SorW5X zoz9gD72*u*NSMLn&Gx$XR}c%s(qZX#%YP~X2HO7FDeZT!-;!W|Al=gERn=ec*!}U> zgp1!l~&EUjEaBN{Kl(m-2KP$s%AGbBNQM1h+Rh4MI@}8ghc1tdux5SDURuqwUunaW3dKtgMiJIp_Q|D zqUC$vrM(--)8bn7+9xr|T3L13EaV4WUs#0Tm@)^qCX3a;{jd%z zArTq{Fzq&PdAMFHGh;Q_JV8{~*!49b=yz!r^|={+ZrwQ8ct&d@rw&I|4Zr10JWrzJ zU}AlnG^Q;_93$D=R@WR%*`IQ}TwA_92Jd6Z?0e*!`S(2j}Td^=wxpgn@i1tRyB8@_}oJ{YLOK88fu-Q#W z!|kOT=SL@h_2Uu}GRnU?oCvu}!%{x}dfO`5;IKharWdYmzcGCJOB_}5FFVOp{DpyB zm{B}^@D!Fu(EVL26J-wckOKrQN86zx*s{yh#9OhaDII61-qUyUYBlh&;#X{60a3cS zQv4{fpeOG%uT4)&tGhOr>CvR0F}`2Q*m3I%TQL2l)c4bW1Z-C?Rui&0`+09YbH?C* zusDmR$CZbDrcR5Z4jP0<`{Dft5-1?0u>^@o?xJC~*p9rx$?-l^LXjE6)~04@n@!a9 zA4hoP8jebC0sK*Cs4`~z>E24yDSHJdLc?T7%EejfZU#9!^I+&P~ zY?=y+VX1M-=OzlRN~Y5UAk+@+Vo7Zacyb%c1V|C1o}x(5LnBKwWHj6%IVGpbO~TN} z`UCQg@{8xlwG6B{W8%FmVj)w9W4qgyTD}`E^B%cotK!G;$sNVy!S?#_9t=Vn!dH6vz;yGTb@!< z$%N|i2mENq97dYa;x8Buq>ih6i4Y?!tlGfOiZ5y|8nr57J$}dRW@;SRX5-Pz(H3&c z`oTXn&R#Kagy84Bv~%Mn4OEi%i-fjpKO1I=k<)zZft+a}8kkq9hWSwc`&MBJ(u0zP z1)9=(=}X0COP%M*7#I_eJ?!LT=U^?wd$`4tGunt@UqN`o?fT-Q_Z{1J@Q58J^&3X4 z`izQ}u)>>hZ@$H!Jy$Av+@-$s!KtvYM(%)HPw)FRKj4`yX0IDh7r(UbYU@?Et-?Hw z3Vp8(?@-!bc5_*qrG?1Y(kM%F>2l4m%NP%vAuDI@!{P^q(VvqbRIc8|yUO%3?c{dX zv*x8UmJ~ag`Nz8oDTPkNrb6lYXzf7Tx>Uq#HYeWGJA8Xta)ux|PvWwe!g~Pctn)FO zi1Z6V-0_pXMZY=SivMHVB7lPuR@=+n{co?Dm~-BK;bT?Pa~Idhvc`+)>xX3h7r6WB zYU8W-QuU)p^zt|c-0=K;Ga3sXG*hR%GXm;m57Eq9^+z5LpL zo(GGzN4Orn`s>;s(Op?yla@VG(@@s+QFIKudi8clK*Z9ml}mp;ujgC6h9BZNq*I;b6L073IF=c{(G+SjF_J(Hw|-dMlO_2=M4aM9FHDnIgwYc zQgeUDRv%#drQ>*>%5s0Nl4m`?zE5h>d;k6BDW|)(zM87lFy|pPf5Pb5C;~pU0tiU7R7F~izzv>R?vLj1HZXn zQXy5~wWm{GEz@6qDsOt&+VZ)#vyR?+Jj=YiLnSkp|5N7|-RkVt2dHcyE!oNA5!G*@d?iR z(cv$)W69rdKRZu(@LqlP_UW&GkF%@){s4BAe;t<&_nHJep?Lbe_=*kJPcs~t@oQK8 zt`OjoafzqTj=TiM^Vdt+yMOJn0M1SbSZ*lbe4$|<8L+^04{^3=Y*>l{Bb!##)p zDL(P@Z3D#QC-aHUd0B7^wCt-&9B4)0>>0w#4={AcRlF+t`*c40mM`5(p>x&**Z4H- zGg5ZF?o+yE$@a|Xo!4@U^eYV+b~OJxX<>BvFmTds`JFiyXLp^NSp3Sr{`U3bOMzQG z9K2b8CjNfu9i3`sEp+9cm38d)bAI`o&-UF_{{oy!`s( literal 0 HcmV?d00001 diff --git a/assets/javascripts/bundle.220ee61c.min.js b/assets/javascripts/bundle.220ee61c.min.js new file mode 100644 index 000000000..116072a11 --- /dev/null +++ b/assets/javascripts/bundle.220ee61c.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Ci=Object.create;var gr=Object.defineProperty;var Ri=Object.getOwnPropertyDescriptor;var ki=Object.getOwnPropertyNames,Ht=Object.getOwnPropertySymbols,Hi=Object.getPrototypeOf,yr=Object.prototype.hasOwnProperty,nn=Object.prototype.propertyIsEnumerable;var rn=(e,t,r)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))yr.call(t,r)&&rn(e,r,t[r]);if(Ht)for(var r of Ht(t))nn.call(t,r)&&rn(e,r,t[r]);return e};var on=(e,t)=>{var r={};for(var n in e)yr.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Ht)for(var n of Ht(e))t.indexOf(n)<0&&nn.call(e,n)&&(r[n]=e[n]);return r};var Pt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Pi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ki(t))!yr.call(e,o)&&o!==r&&gr(e,o,{get:()=>t[o],enumerable:!(n=Ri(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Ci(Hi(e)):{},Pi(t||!e||!e.__esModule?gr(r,"default",{value:e,enumerable:!0}):r,e));var sn=Pt((xr,an)=>{(function(e,t){typeof xr=="object"&&typeof an!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(xr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(O){return!!(O&&O!==document&&O.nodeName!=="HTML"&&O.nodeName!=="BODY"&&"classList"in O&&"contains"in O.classList)}function f(O){var Qe=O.type,De=O.tagName;return!!(De==="INPUT"&&s[Qe]&&!O.readOnly||De==="TEXTAREA"&&!O.readOnly||O.isContentEditable)}function c(O){O.classList.contains("focus-visible")||(O.classList.add("focus-visible"),O.setAttribute("data-focus-visible-added",""))}function u(O){O.hasAttribute("data-focus-visible-added")&&(O.classList.remove("focus-visible"),O.removeAttribute("data-focus-visible-added"))}function p(O){O.metaKey||O.altKey||O.ctrlKey||(a(r.activeElement)&&c(r.activeElement),n=!0)}function m(O){n=!1}function d(O){a(O.target)&&(n||f(O.target))&&c(O.target)}function h(O){a(O.target)&&(O.target.classList.contains("focus-visible")||O.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(O.target))}function v(O){document.visibilityState==="hidden"&&(o&&(n=!0),Y())}function Y(){document.addEventListener("mousemove",N),document.addEventListener("mousedown",N),document.addEventListener("mouseup",N),document.addEventListener("pointermove",N),document.addEventListener("pointerdown",N),document.addEventListener("pointerup",N),document.addEventListener("touchmove",N),document.addEventListener("touchstart",N),document.addEventListener("touchend",N)}function B(){document.removeEventListener("mousemove",N),document.removeEventListener("mousedown",N),document.removeEventListener("mouseup",N),document.removeEventListener("pointermove",N),document.removeEventListener("pointerdown",N),document.removeEventListener("pointerup",N),document.removeEventListener("touchmove",N),document.removeEventListener("touchstart",N),document.removeEventListener("touchend",N)}function N(O){O.target.nodeName&&O.target.nodeName.toLowerCase()==="html"||(n=!1,B())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),Y(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var cn=Pt(Er=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var u={next:function(){var p=c.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},s=function(){var c=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof c){var d=this;p.forEach(function(B,N){d.append(N,B)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(f,c){typeof f!="string"&&(f=String(f)),c&&typeof c!="string"&&(c=String(c));var u=document,p;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=c,u.head.appendChild(p);try{if(p.href.indexOf(c)!==0)throw new Error(p.href)}catch(O){throw new Error("URL unable to set base "+c+" due to "+O)}}var m=u.createElement("a");m.href=f,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=f,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,Y=!0,B=this;["append","delete","set"].forEach(function(O){var Qe=h[O];h[O]=function(){Qe.apply(h,arguments),v&&(Y=!1,B.search=h.toString(),Y=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var N=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==N&&(N=this.search,Y&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},s=i.prototype,a=function(f){Object.defineProperty(s,f,{get:function(){return this._anchorElement[f]},set:function(c){this._anchorElement[f]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(f){a(f)}),Object.defineProperty(s,"search",{get:function(){return this._anchorElement.search},set:function(f){this._anchorElement.search=f,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(s,{toString:{get:function(){var f=this;return function(){return f.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(f){this._anchorElement.href=f,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(f){this._anchorElement.pathname=f},enumerable:!0},origin:{get:function(){var f={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=f&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(f){},enumerable:!0},username:{get:function(){return""},set:function(f){},enumerable:!0}}),i.createObjectURL=function(f){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(f){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er)});var qr=Pt((Mt,Nr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Mt=="object"&&typeof Nr=="object"?Nr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Mt=="object"?Mt.ClipboardJS=r():t.ClipboardJS=r()})(Mt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return Ai}});var s=i(279),a=i.n(s),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(T){return!1}}var d=function(T){var E=p()(T);return m("cut"),E},h=d;function v(j){var T=document.documentElement.getAttribute("dir")==="rtl",E=document.createElement("textarea");E.style.fontSize="12pt",E.style.border="0",E.style.padding="0",E.style.margin="0",E.style.position="absolute",E.style[T?"right":"left"]="-9999px";var H=window.pageYOffset||document.documentElement.scrollTop;return E.style.top="".concat(H,"px"),E.setAttribute("readonly",""),E.value=j,E}var Y=function(T,E){var H=v(T);E.container.appendChild(H);var I=p()(H);return m("copy"),H.remove(),I},B=function(T){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},H="";return typeof T=="string"?H=Y(T,E):T instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(T==null?void 0:T.type)?H=Y(T.value,E):(H=p()(T),m("copy")),H},N=B;function O(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?O=function(E){return typeof E}:O=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},O(j)}var Qe=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},E=T.action,H=E===void 0?"copy":E,I=T.container,q=T.target,Me=T.text;if(H!=="copy"&&H!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&O(q)==="object"&&q.nodeType===1){if(H==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(H==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Me)return N(Me,{container:I});if(q)return H==="cut"?h(q):N(q,{container:I})},De=Qe;function $e(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?$e=function(E){return typeof E}:$e=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},$e(j)}function Ei(j,T){if(!(j instanceof T))throw new TypeError("Cannot call a class as a function")}function tn(j,T){for(var E=0;E0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof I.action=="function"?I.action:this.defaultAction,this.target=typeof I.target=="function"?I.target:this.defaultTarget,this.text=typeof I.text=="function"?I.text:this.defaultText,this.container=$e(I.container)==="object"?I.container:document.body}},{key:"listenClick",value:function(I){var q=this;this.listener=c()(I,"click",function(Me){return q.onClick(Me)})}},{key:"onClick",value:function(I){var q=I.delegateTarget||I.currentTarget,Me=this.action(q)||"copy",kt=De({action:Me,container:this.container,target:this.target(q),text:this.text(q)});this.emit(kt?"success":"error",{action:Me,text:kt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(I){return vr("action",I)}},{key:"defaultTarget",value:function(I){var q=vr("target",I);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(I){return vr("text",I)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(I){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return N(I,q)}},{key:"cut",value:function(I){return h(I)}},{key:"isSupported",value:function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof I=="string"?[I]:I,Me=!!document.queryCommandSupported;return q.forEach(function(kt){Me=Me&&!!document.queryCommandSupported(kt)}),Me}}]),E}(a()),Ai=Li},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,f){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(f))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof m=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return a(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(m))return c(m,d,h);if(s.nodeList(m))return u(m,d,h);if(s.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return a(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),s=f.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var f=this;function c(){f.off(i,c),s.apply(a,arguments)}return c._=s,this.on(i,c,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=a.length;for(f;f{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var rs=/["'&<>]/;Yo.exports=ns;function ns(e){var t=""+e,r=rs.exec(t);if(!r)return t;var n,o="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||a(m,d)})})}function a(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof et?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){a("next",m)}function u(m){a("throw",m)}function p(m,d){m(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function pn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Ee=="function"?Ee(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(s){return new Promise(function(a,f){s=e[i](s),o(a,f,s.done,s.value)})}}function o(i,s,a,f){Promise.resolve(f).then(function(c){i({value:c,done:a})},s)}}function C(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var It=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function Ve(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ie=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=Ee(s),f=a.next();!f.done;f=a.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var u=this.initialTeardown;if(C(u))try{u()}catch(v){i=v instanceof It?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=Ee(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{ln(h)}catch(v){i=i!=null?i:[],v instanceof It?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new It(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)ln(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ve(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ve(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Sr=Ie.EMPTY;function jt(e){return e instanceof Ie||e&&"closed"in e&&C(e.remove)&&C(e.add)&&C(e.unsubscribe)}function ln(e){C(e)?e():e.unsubscribe()}var Le={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Sr:(this.currentObservers=null,a.push(r),new Ie(function(){n.currentObservers=null,Ve(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new xn(r,n)},t}(F);var xn=function(e){ie(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Sr},t}(x);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ie(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,f=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Wt);var Sn=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Dt);var Oe=new Sn(wn);var M=new F(function(e){return e.complete()});function Vt(e){return e&&C(e.schedule)}function Cr(e){return e[e.length-1]}function Ye(e){return C(Cr(e))?e.pop():void 0}function Te(e){return Vt(Cr(e))?e.pop():void 0}function zt(e,t){return typeof Cr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Nt(e){return C(e==null?void 0:e.then)}function qt(e){return C(e[ft])}function Kt(e){return Symbol.asyncIterator&&C(e==null?void 0:e[Symbol.asyncIterator])}function Qt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function zi(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Yt=zi();function Gt(e){return C(e==null?void 0:e[Yt])}function Bt(e){return un(this,arguments,function(){var r,n,o,i;return $t(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,et(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,et(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,et(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Jt(e){return C(e==null?void 0:e.getReader)}function U(e){if(e instanceof F)return e;if(e!=null){if(qt(e))return Ni(e);if(pt(e))return qi(e);if(Nt(e))return Ki(e);if(Kt(e))return On(e);if(Gt(e))return Qi(e);if(Jt(e))return Yi(e)}throw Qt(e)}function Ni(e){return new F(function(t){var r=e[ft]();if(C(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function qi(e){return new F(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?A(function(o,i){return e(o,i,n)}):de,ge(1),r?He(t):Dn(function(){return new Zt}))}}function Vn(){for(var e=[],t=0;t=2,!0))}function pe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new x}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,f=a===void 0?!0:a;return function(c){var u,p,m,d=0,h=!1,v=!1,Y=function(){p==null||p.unsubscribe(),p=void 0},B=function(){Y(),u=m=void 0,h=v=!1},N=function(){var O=u;B(),O==null||O.unsubscribe()};return y(function(O,Qe){d++,!v&&!h&&Y();var De=m=m!=null?m:r();Qe.add(function(){d--,d===0&&!v&&!h&&(p=$r(N,f))}),De.subscribe(Qe),!u&&d>0&&(u=new rt({next:function($e){return De.next($e)},error:function($e){v=!0,Y(),p=$r(B,o,$e),De.error($e)},complete:function(){h=!0,Y(),p=$r(B,s),De.complete()}}),U(O).subscribe(u))})(c)}}function $r(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function z(e,t=document){let r=ce(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ce(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function tr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(ke(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),V(e===_e()),J())}function Xe(e){return{x:e.offsetLeft,y:e.offsetTop}}function Kn(e){return L(b(window,"load"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>Xe(e)),V(Xe(e)))}function rr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>rr(e)),V(rr(e)))}var Yn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!Wr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),va?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Wr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ba.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Gn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Jn=typeof WeakMap!="undefined"?new WeakMap:new Yn,Xn=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=ga.getInstance(),n=new La(t,r,this);Jn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Xn.prototype[e]=function(){var t;return(t=Jn.get(this))[e].apply(t,arguments)}});var Aa=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:Xn}(),Zn=Aa;var eo=new x,Ca=$(()=>k(new Zn(e=>{for(let t of e)eo.next(t)}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ye(e){return Ca.pipe(S(t=>t.observe(e)),g(t=>eo.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(()=>he(e)))),V(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var to=new x,Ra=$(()=>k(new IntersectionObserver(e=>{for(let t of e)to.next(t)},{threshold:0}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function sr(e){return Ra.pipe(S(t=>t.observe(e)),g(t=>to.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function ro(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=he(e),o=bt(e);return r>=o.height-n.height-t}),J())}var cr={drawer:z("[data-md-toggle=drawer]"),search:z("[data-md-toggle=search]")};function no(e){return cr[e].checked}function Ke(e,t){cr[e].checked!==t&&cr[e].click()}function Ue(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),V(t.checked))}function ka(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ha(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(V(!1))}function oo(){let e=b(window,"keydown").pipe(A(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:no("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),A(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!ka(n,r)}return!0}),pe());return Ha().pipe(g(t=>t?M:e))}function le(){return new URL(location.href)}function ot(e){location.href=e.href}function io(){return new x}function ao(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)ao(e,r)}function _(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)ao(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function so(){return location.hash.substring(1)}function Dr(e){let t=_("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Pa(e){return L(b(window,"hashchange"),e).pipe(l(so),V(so()),A(t=>t.length>0),X(1))}function co(e){return Pa(e).pipe(l(t=>ce(`[id="${t}"]`)),A(t=>typeof t!="undefined"))}function Vr(e){let t=matchMedia(e);return er(r=>t.addListener(()=>r(t.matches))).pipe(V(t.matches))}function fo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(V(e.matches))}function zr(e,t){return e.pipe(g(r=>r?t():M))}function ur(e,t={credentials:"same-origin"}){return ue(fetch(`${e}`,t)).pipe(fe(()=>M),g(r=>r.status!==200?Ot(()=>new Error(r.statusText)):k(r)))}function We(e,t){return ur(e,t).pipe(g(r=>r.json()),X(1))}function uo(e,t){let r=new DOMParser;return ur(e,t).pipe(g(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),X(1))}function pr(e){let t=_("script",{src:e});return $(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(g(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),R(()=>document.head.removeChild(t)),ge(1))))}function po(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function lo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(po),V(po()))}function mo(){return{width:innerWidth,height:innerHeight}}function ho(){return b(window,"resize",{passive:!0}).pipe(l(mo),V(mo()))}function bo(){return G([lo(),ho()]).pipe(l(([e,t])=>({offset:e,size:t})),X(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(ee("size")),o=G([n,r]).pipe(l(()=>Xe(e)));return G([r,t,o]).pipe(l(([{height:i},{offset:s,size:a},{x:f,y:c}])=>({offset:{x:s.x-f,y:s.y-c+i},size:a})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(s=>{let a=document.createElement("script");a.src=i,a.onload=s,document.body.appendChild(a)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,s,a,f,c)=>{if(s===`${this.url}`){let u=new ErrorEvent("error",{message:i,filename:s,lineno:a,colno:f,error:c});this.dispatchEvent(u),this.onerror&&this.onerror(u)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + +
      + + + + + + + +
      + +
      + + + + +
      +
      + + + +
      +
      +
      + + + + + + +
      +
      +
      + + + + + + + +
      +
      + + + + + + + +

      Using the Prompt Pipeline

      +

      To use the Prompt Pipeline in OpenAI Function Call, you need to instantiate a ChatCompletion object and build the API call by piping messages and functions to it.

      +

      The ChatCompletion Object

      +

      The ChatCompletion object is the starting point for constructing your API call. It provides the necessary methods and attributes to define the conversation flow and include function calls.

      + + +
      + + + +
      + + + +
      + + + + + + + + +
      + + + +

      + ChatCompletion + + +

      + + +
      +

      + Bases: BaseModel

      + + +

      A chat completion is a collection of messages and configration options that can be used to +generate a chat response from the OpenAI API.

      + +
      + Usage +

      In order to generate a chat response from the OpenAI API, you need to create a chat completion and then pipe it to a message and a OpenAISchema. Then when create or acreate is called we'll return the response from the API as an instance of OpenAISchema.

      +
      +
      + Example +
      class Sum(OpenAISchema):
      +    a: int
      +    b: int
      +
      +completion = (
      +    ChatCompletion("example")
      +    | TaggedMessage(content="What is 1 + 1?", tag="question")
      +    | Schema
      +)
      +
      +print(completion.create())
      +# Sum(a=1, b=1)
      +
      +
      +
      + Tips +
        +
      • You can use the | operator to chain multiple messages and functions together
      • +
      • There should be exactly one function call class (OpenAISchema) per chat completion
      • +
      • System messages will be concatenated together
      • +
      • Only one chain of thought message can be used per completion
      • +
      +
      + + +

      Attributes:

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameTypeDescription
      name + str + +
      +

      The name of the chat completion

      +
      +
      model + str + +
      +

      The model to use for the chat completion (default: "gpt-3.5-turbo-0613")

      +
      +
      max_tokens + int + +
      +

      The maximum number of tokens to generate (default: 1000)

      +
      +
      temperature + float + +
      +

      The temperature to use for the chat completion (default: 0.1)

      +
      +
      stream + bool + +
      +

      Whether to stream the response from the API (default: False)

      +
      +
      + +
      + Warning +

      Currently we do not support streaming the response from the API, so the stream parameter is not supported yet.

      +
      +
      + Source code in instructor/dsl/completion.py +
      class ChatCompletion(BaseModel):
      +    """
      +    A chat completion is a collection of messages and configration options that can be used to
      +    generate a chat response from the OpenAI API.
      +
      +
      +    Usage:
      +        In order to generate a chat response from the OpenAI API, you need to create a chat completion and then pipe it to a message and a `OpenAISchema`. Then when `create` or `acreate` is called we'll return the response from the API as an instance of `OpenAISchema`.
      +
      +
      +    Example:
      +        ```python
      +        class Sum(OpenAISchema):
      +            a: int
      +            b: int
      +
      +        completion = (
      +            ChatCompletion("example")
      +            | TaggedMessage(content="What is 1 + 1?", tag="question")
      +            | Schema
      +        )
      +
      +        print(completion.create())
      +        # Sum(a=1, b=1)
      +        ```
      +
      +
      +    Tips:
      +        * You can use the `|` operator to chain multiple messages and functions together
      +        * There should be exactly one function call class (OpenAISchema) per chat completion
      +        * System messages will be concatenated together
      +        * Only one chain of thought message can be used per completion
      +
      +
      +    Attributes:
      +        name (str): The name of the chat completion
      +        model (str): The model to use for the chat completion (default: "gpt-3.5-turbo-0613")
      +        max_tokens (int): The maximum number of tokens to generate (default: 1000)
      +        temperature (float): The temperature to use for the chat completion (default: 0.1)
      +        stream (bool): Whether to stream the response from the API (default: False)
      +
      +    Warning:
      +        Currently we do not support streaming the response from the API, so the stream parameter is not supported yet.
      +    """
      +
      +    name: str
      +    model: str = Field(default="gpt-3.5-turbo-0613")
      +    max_tokens: int = Field(default=1000)
      +    temperature: float = Field(default=0.1)
      +    stream: bool = Field(default=False)
      +
      +    messages: List[Message] = Field(default_factory=list, repr=False)
      +    system_message: Message = Field(default=None, repr=False)
      +    cot_message: ChainOfThought = Field(default=None, repr=False)
      +    function: OpenAISchema = Field(default=None, repr=False)
      +
      +    def __post_init__(self):
      +        assert self.stream == False, "Stream is not supported yet"
      +
      +    def __or__(self, other: Union[Message, OpenAISchema]) -> "ChatCompletion":
      +        """
      +        Add a message or function to the chat completion, this can be used to chain multiple messages and functions together. It should contain some set of user or system messages along with a function call class (OpenAISchema)
      +
      +        """
      +
      +        if isinstance(other, Message):
      +            if other.role == MessageRole.SYSTEM:
      +                if not self.system_message:
      +                    self.system_message = other  # type: ignore
      +                else:
      +                    self.system_message.content += "\n\n" + other.content
      +            else:
      +                if isinstance(other, ChainOfThought):
      +                    if self.cot_message:
      +                        raise ValueError(
      +                            "Only one chain of thought message can be used per completion"
      +                        )
      +                    self.cot_message = other
      +                self.messages.append(other)
      +        else:
      +            if self.function:
      +                raise ValueError(
      +                    "Only one function can be used per completion, wrap your tools into a single toolkit schema"
      +                )
      +            self.function = other
      +
      +            assert self.model not in {
      +                "gpt-3.5-turbo",
      +                "gpt-4",
      +            }, "Only *-0613 models can currently use functions"
      +        return self
      +
      +    @property
      +    def kwargs(self) -> dict:
      +        """
      +        Construct the kwargs for the OpenAI API call
      +
      +        Example:
      +            ```python
      +            result = openai.ChatCompletion.create(**self.kwargs)
      +            ```
      +        """
      +        kwargs = {}
      +
      +        messages = []
      +
      +        if self.system_message:
      +            messages.append(self.system_message.dict())
      +
      +        if self.messages:
      +            special_types = {
      +                SystemMessage,
      +                ChainOfThought,
      +            }
      +            messages += [
      +                message.dict()
      +                for message in self.messages
      +                if type(message) not in special_types
      +            ]
      +
      +        if self.cot_message:
      +            messages.append(self.cot_message.dict())
      +
      +        kwargs["messages"] = messages
      +
      +        if self.function:
      +            kwargs["functions"] = [self.function.openai_schema]
      +            kwargs["function_call"] = {"name": self.function.openai_schema["name"]}
      +
      +        kwargs["max_tokens"] = self.max_tokens
      +        kwargs["temperature"] = self.temperature
      +        kwargs["model"] = self.model
      +        return kwargs
      +
      +    def create(self):
      +        """
      +        Create a chat response from the OpenAI API
      +
      +        Returns:
      +            response (OpenAISchema): The response from the OpenAI API
      +        """
      +        kwargs = self.kwargs
      +        completion = openai.ChatCompletion.create(**kwargs)
      +        if self.function:
      +            return self.function.from_response(completion)
      +        return completion
      +
      +    async def acreate(self):
      +        """
      +        Create a chat response from the OpenAI API asynchronously
      +
      +        Returns:
      +            response (OpenAISchema): The response from the OpenAI API
      +        """
      +        kwargs = self.kwargs
      +        completion = openai.ChatCompletion.acreate(**kwargs)
      +        if self.function:
      +            return self.function.from_response(await completion)
      +        return await completion
      +
      +
      + + + +
      + + + + + + + +
      + + + +

      +kwargs: dict + + + property + + +

      + + +
      + +

      Construct the kwargs for the OpenAI API call

      + +
      + Example +
      result = openai.ChatCompletion.create(**self.kwargs)
      +
      +
      + +
      + + + + +
      + + + +

      +__or__(other) + +

      + + +
      + +

      Add a message or function to the chat completion, this can be used to chain multiple messages and functions together. It should contain some set of user or system messages along with a function call class (OpenAISchema)

      + +
      + Source code in instructor/dsl/completion.py +
      67
      +68
      +69
      +70
      +71
      +72
      +73
      +74
      +75
      +76
      +77
      +78
      +79
      +80
      +81
      +82
      +83
      +84
      +85
      +86
      +87
      +88
      +89
      +90
      +91
      +92
      +93
      +94
      +95
      +96
      +97
      +98
      def __or__(self, other: Union[Message, OpenAISchema]) -> "ChatCompletion":
      +    """
      +    Add a message or function to the chat completion, this can be used to chain multiple messages and functions together. It should contain some set of user or system messages along with a function call class (OpenAISchema)
      +
      +    """
      +
      +    if isinstance(other, Message):
      +        if other.role == MessageRole.SYSTEM:
      +            if not self.system_message:
      +                self.system_message = other  # type: ignore
      +            else:
      +                self.system_message.content += "\n\n" + other.content
      +        else:
      +            if isinstance(other, ChainOfThought):
      +                if self.cot_message:
      +                    raise ValueError(
      +                        "Only one chain of thought message can be used per completion"
      +                    )
      +                self.cot_message = other
      +            self.messages.append(other)
      +    else:
      +        if self.function:
      +            raise ValueError(
      +                "Only one function can be used per completion, wrap your tools into a single toolkit schema"
      +            )
      +        self.function = other
      +
      +        assert self.model not in {
      +            "gpt-3.5-turbo",
      +            "gpt-4",
      +        }, "Only *-0613 models can currently use functions"
      +    return self
      +
      +
      +
      + +
      + + +
      + + + +

      +acreate() + + + async + + +

      + + +
      + +

      Create a chat response from the OpenAI API asynchronously

      + + + +

      Returns:

      + + + + + + + + + + + + + +
      Name TypeDescription
      response + OpenAISchema + +
      +

      The response from the OpenAI API

      +
      +
      + +
      + Source code in instructor/dsl/completion.py +
      async def acreate(self):
      +    """
      +    Create a chat response from the OpenAI API asynchronously
      +
      +    Returns:
      +        response (OpenAISchema): The response from the OpenAI API
      +    """
      +    kwargs = self.kwargs
      +    completion = openai.ChatCompletion.acreate(**kwargs)
      +    if self.function:
      +        return self.function.from_response(await completion)
      +    return await completion
      +
      +
      +
      + +
      + + +
      + + + +

      +create() + +

      + + +
      + +

      Create a chat response from the OpenAI API

      + + + +

      Returns:

      + + + + + + + + + + + + + +
      Name TypeDescription
      response + OpenAISchema + +
      +

      The response from the OpenAI API

      +
      +
      + +
      + Source code in instructor/dsl/completion.py +
      def create(self):
      +    """
      +    Create a chat response from the OpenAI API
      +
      +    Returns:
      +        response (OpenAISchema): The response from the OpenAI API
      +    """
      +    kwargs = self.kwargs
      +    completion = openai.ChatCompletion.create(**kwargs)
      +    if self.function:
      +        return self.function.from_response(completion)
      +    return completion
      +
      +
      +
      + +
      + + + +
      + +
      + +
      + + + + +
      + +
      + +

      Messages Types

      +

      The basis of a message is defined as a dataclass. However, we provide helper functions and classes that provide additional functionality in the form of templates.

      + + +
      + + + +
      + + + +
      + + + + + + + + +
      + + + +

      + Message + + +

      + + +
      + + +

      A message class that helps build messages for the chat interface.

      + + + +

      Attributes:

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameTypeDescription
      content + str + +
      +

      The content of the message.

      +
      +
      role + MessageRole + +
      +

      The role of the message.

      +
      +
      name + Optional[str] + +
      +

      The name of the user, only used if the role is USER.

      +
      +
      + +
      + Tips +

      If you want to make custom messages simple make a function that returns the Message class and use that as part of your pipes. For example if you want to add additional context:

      +
      def GetUserData(user_id) -> Message:
      +    data = ...
      +    return Message(
      +        content="This is some more user data: {data} for {user_id}
      +        role=MessageRole.USER
      +    )
      +
      +
      +
      + Source code in instructor/dsl/messages/base.py +
      23
      +24
      +25
      +26
      +27
      +28
      +29
      +30
      +31
      +32
      +33
      +34
      +35
      +36
      +37
      +38
      +39
      +40
      +41
      +42
      +43
      +44
      +45
      +46
      +47
      +48
      +49
      +50
      +51
      +52
      +53
      +54
      +55
      +56
      +57
      +58
      @dataclass
      +class Message:
      +    """
      +    A message class that helps build messages for the chat interface.
      +
      +    Attributes:
      +        content (str): The content of the message.
      +        role (MessageRole): The role of the message.
      +        name (Optional[str]): The name of the user, only used if the role is USER.
      +
      +    Tips:
      +        If you want to make custom messages simple make a function that returns the `Message` class and use that as part of your pipes. For example if you want to add additional context:
      +
      +        ```python
      +        def GetUserData(user_id) -> Message:
      +            data = ...
      +            return Message(
      +                content="This is some more user data: {data} for {user_id}
      +                role=MessageRole.USER
      +            )
      +        ```
      +    """
      +
      +    content: str = Field(default=None, repr=True)
      +    role: MessageRole = Field(default=MessageRole.USER, repr=False)
      +    name: Optional[str] = Field(default=None)
      +
      +    def dict(self):
      +        assert self.content is not None, "Content must be set!"
      +        obj = {
      +            "role": self.role.name.lower(),
      +            "content": self.content,
      +        }
      +        if self.name and self.role == MessageRole.USER:
      +            obj["name"] = self.name
      +        return obj
      +
      +
      + + + +
      + + + + + + + + + + + +
      + +
      + +
      + +
      + + + +

      + MessageRole + + +

      + + +
      +

      + Bases: Enum

      + + +

      An enum that represents the role of a message.

      + + + +

      Attributes:

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameTypeDescription
      USER + +
      +

      A message from the user.

      +
      +
      SYSTEM + +
      +

      A message from the system.

      +
      +
      ASSISTANT + +
      +

      A message from the assistant.

      +
      +
      + +
      + Source code in instructor/dsl/messages/base.py +
       8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      class MessageRole(Enum):
      +    """
      +    An enum that represents the role of a message.
      +
      +    Attributes:
      +        USER: A message from the user.
      +        SYSTEM: A message from the system.
      +        ASSISTANT: A message from the assistant.
      +    """
      +
      +    USER = auto()
      +    SYSTEM = auto()
      +    ASSISTANT = auto()
      +
      +
      + + + +
      + + + + + + + + + + + +
      + +
      + +
      + + + + +
      + +
      + +

      Helper Messages / Templates

      + + +
      + + + +
      + + + +
      + + + + + + + + +
      + + + +

      + ChainOfThought + + +

      + + +
      +

      + Bases: Message

      + + +

      Special message type to correctly leverage chain of thought reasoning +for the task. This is automatically set as the last message.

      + +
      + Source code in instructor/dsl/messages/messages.py +
      @dataclass
      +class ChainOfThought(Message):
      +    """
      +    Special message type to correctly leverage chain of thought reasoning
      +    for the task. This is automatically set as the last message.
      +    """
      +
      +    def __post_init__(self):
      +        self.content = "Lets think step by step to get the correct answer:"
      +        self.role = MessageRole.ASSISTANT
      +
      +
      + + + +
      + + + + + + + + + + + +
      + +
      + +
      + + + +
      + + + +

      +SystemGuidelines(guidelines) + +

      + + +
      + +

      Create a system message that tells the user what guidelines they must follow when responding.

      + + + +

      Parameters:

      + + + + + + + + + + + + + + + + + +
      NameTypeDescriptionDefault
      guidelines + List[str] + +
      +

      The guidelines the user must follow when responding.

      +
      +
      + required +
      + + + +

      Returns:

      + + + + + + + + + + + + + +
      Name TypeDescription
      message + Message + +
      +

      A system message that tells the user what guidelines they must follow when responding.

      +
      +
      + +
      + Source code in instructor/dsl/messages/messages.py +
      65
      +66
      +67
      +68
      +69
      +70
      +71
      +72
      +73
      +74
      +75
      +76
      +77
      +78
      +79
      def SystemGuidelines(guidelines: List[str]) -> Message:
      +    """
      +    Create a system message that tells the user what guidelines they must follow when responding.
      +
      +    Parameters:
      +        guidelines (List[str]): The guidelines the user must follow when responding.
      +
      +    Returns:
      +        message (Message): A system message that tells the user what guidelines they must follow when responding.
      +    """
      +    guideline_str = "\n* ".join(guidelines)
      +    return Message(
      +        content=f"Here are the guidelines you must to follow when responding:\n\n* {guideline_str}",
      +        role=MessageRole.SYSTEM,
      +    )
      +
      +
      +
      + +
      + + +
      + + + +

      +SystemIdentity(identity) + +

      + + +
      + +

      Create a system message that tells the user what their identity is.

      + + + +

      Parameters:

      + + + + + + + + + + + + + + + + + +
      NameTypeDescriptionDefault
      identity + str + +
      +

      The identity of the user.

      +
      +
      + required +
      + + + +

      Returns:

      + + + + + + + + + + + + + +
      Name TypeDescription
      message + Message + +
      +

      A system message that tells the user what their identity is.

      +
      +
      + +
      + Source code in instructor/dsl/messages/messages.py +
       7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      def SystemIdentity(identity: str) -> Message:
      +    """
      +    Create a system message that tells the user what their identity is.
      +
      +    Parameters:
      +        identity (str): The identity of the user.
      +
      +    Returns:
      +        message (Message): A system message that tells the user what their identity is.
      +    """
      +    return Message(content=f"You are a {identity.lower()}.", role=MessageRole.SYSTEM)
      +
      +
      +
      + +
      + + +
      + + + +

      +SystemMessage(content) + +

      + + +
      + +

      Create a system message.

      + + + +

      Parameters:

      + + + + + + + + + + + + + + + + + +
      NameTypeDescriptionDefault
      content + str + +
      +

      The content of the message.

      +
      +
      + required +
      + + + +

      Returns:

      + + + + + + + + + + + + + +
      Name TypeDescription
      message + Message + +
      +

      A system message.

      +
      +
      + +
      + Source code in instructor/dsl/messages/messages.py +
      53
      +54
      +55
      +56
      +57
      +58
      +59
      +60
      +61
      +62
      def SystemMessage(content: str) -> Message:
      +    """
      +    Create a system message.
      +
      +    Parameters:
      +        content (str): The content of the message.
      +
      +    Returns:
      +        message (Message): A system message."""
      +    return Message(content=content, role=MessageRole.SYSTEM)
      +
      +
      +
      + +
      + + +
      + + + +

      +SystemStyle(style) + +

      + + +
      + +

      Create a system message that tells the user what style they are responding in.

      + + + +

      Parameters:

      + + + + + + + + + + + + + + + + + +
      NameTypeDescriptionDefault
      style + str + +
      +

      The style the user is responding in.

      +
      +
      + required +
      + + + +

      Returns:

      + + + + + + + + + + + + + +
      Name TypeDescription
      message + Message + +
      +

      A system message that tells the user what style they are responding in.

      +
      +
      + +
      + Source code in instructor/dsl/messages/messages.py +
      37
      +38
      +39
      +40
      +41
      +42
      +43
      +44
      +45
      +46
      +47
      +48
      +49
      +50
      def SystemStyle(style: str) -> Message:
      +    """
      +    Create a system message that tells the user what style they are responding in.
      +
      +    Parameters:
      +        style (str): The style the user is responding in.
      +
      +    Returns:
      +        message (Message): A system message that tells the user what style they are responding in.
      +    """
      +    return Message(
      +        content=f"You must respond with in following style: {style.lower()}.",
      +        role=MessageRole.SYSTEM,
      +    )
      +
      +
      +
      + +
      + + +
      + + + +

      +SystemTask(task) + +

      + + +
      + +

      Create a system message that tells the user what task they are doing, uses language to +push the system to behave as a world class algorithm.

      + + + +

      Parameters:

      + + + + + + + + + + + + + + + + + +
      NameTypeDescriptionDefault
      task + str + +
      +

      The task the user is doing.

      +
      +
      + required +
      + + + +

      Returns:

      + + + + + + + + + + + + + +
      Name TypeDescription
      message + Message + +
      +

      A system message that tells the user what task they are doing.

      +
      +
      + +
      + Source code in instructor/dsl/messages/messages.py +
      20
      +21
      +22
      +23
      +24
      +25
      +26
      +27
      +28
      +29
      +30
      +31
      +32
      +33
      +34
      def SystemTask(task: str) -> Message:
      +    """
      +    Create a system message that tells the user what task they are doing, uses language to
      +    push the system to behave as a world class algorithm.
      +
      +    Parameters:
      +        task (str): The task the user is doing.
      +
      +    Returns:
      +        message (Message): A system message that tells the user what task they are doing.
      +    """
      +    return Message(
      +        content=f"You are a world class state of the art algorithm capable of correctly completing the following task: `{task}`.",
      +        role=MessageRole.SYSTEM,
      +    )
      +
      +
      +
      + +
      + + +
      + + + +

      +SystemTips(tips) + +

      + + +
      + +

      Create a system message that gives the user some tips before responding.

      + + + +

      Parameters:

      + + + + + + + + + + + + + + + + + +
      NameTypeDescriptionDefault
      tips + List[str] + +
      +

      The tips the user should follow when responding.

      +
      +
      + required +
      + + + +

      Returns:

      + + + + + + + + + + + + + +
      Name TypeDescription
      message + Message + +
      +

      A system message that gives the user some tips before responding.

      +
      +
      + +
      + Source code in instructor/dsl/messages/messages.py +
      82
      +83
      +84
      +85
      +86
      +87
      +88
      +89
      +90
      +91
      +92
      +93
      +94
      +95
      +96
      def SystemTips(tips: List[str]) -> Message:
      +    """
      +    Create a system message that gives the user some tips before responding.
      +
      +    Parameters:
      +        tips (List[str]): The tips the user should follow when responding.
      +
      +    Returns:
      +        message (Message): A system message that gives the user some tips before responding.
      +    """
      +    tips_str = "\n* ".join(tips)
      +    return Message(
      +        content=f"Here are some tips before responding:\n\n* {tips_str}",
      +        role=MessageRole.SYSTEM,
      +    )
      +
      +
      +
      + +
      + + + +
      + +
      + +
      + +
      + + + +
      + + + +
      + + + + + + + + + + +
      + + + +

      +TaggedMessage(content, tag='data', header='Consider the following data:') + +

      + + +
      + +

      Create a user message.

      + + + +

      Parameters:

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameTypeDescriptionDefault
      content + str + +
      +

      The content of the message.

      +
      +
      + required +
      tag + str + +
      +

      The tag to use, will show up as content.

      +
      +
      + 'data' +
      header + str + +
      +

      The header to reference the data

      +
      +
      + 'Consider the following data:' +
      + + + +

      Returns:

      + + + + + + + + + + + + + +
      Name TypeDescription
      message + Message + +
      +

      A user message with the data tagged.

      +
      +
      + +
      + Source code in instructor/dsl/messages/user.py +
      39
      +40
      +41
      +42
      +43
      +44
      +45
      +46
      +47
      +48
      +49
      +50
      +51
      +52
      +53
      +54
      def TaggedMessage(
      +    content: str, tag: str = "data", header: str = "Consider the following data:"
      +) -> Message:
      +    """
      +    Create a user message.
      +
      +    Parameters:
      +        content (str): The content of the message.
      +        tag (str): The tag to use, will show up as <tag>content</tag>.
      +        header (str): The header to reference the data
      +
      +    Returns:
      +        message (Message): A user message with the data tagged.
      +    """
      +    content = f"{header}\n\n<{tag}>{content}</{tag}>"
      +    return Message(content=content, role=MessageRole.USER)
      +
      +
      +
      + +
      + + +
      + + + +

      +TipsMessage(tips, header='Here are some tips to help you complete the task') + +

      + + +
      + +

      Create a system message that gives the user tips to help them complete the task.

      + + + +

      Parameters:

      + + + + + + + + + + + + + + + + + + + + + + + +
      NameTypeDescriptionDefault
      tips + List[str] + +
      +

      A list of tips to help the user complete the task.

      +
      +
      + required +
      header + str + +
      +

      The header of the message.

      +
      +
      + 'Here are some tips to help you complete the task' +
      + + + +

      Returns:

      + + + + + + + + + + + + + +
      Name TypeDescription
      message + Message + +
      +

      A user message that gives the user tips to help them complete the

      +
      +
      + +
      + Source code in instructor/dsl/messages/user.py +
       6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      def TipsMessage(
      +    tips: List[str], header: str = "Here are some tips to help you complete the task"
      +) -> Message:
      +    """
      +    Create a system message that gives the user tips to help them complete the task.
      +
      +    Parameters:
      +        tips (List[str]): A list of tips to help the user complete the task.
      +        header (str): The header of the message.
      +
      +    Returns:
      +        message (Message): A user message that gives the user tips to help them complete the
      +    """
      +    tips_str = "\n* ".join(tips)
      +    return Message(
      +        content=f"{header}:\n\n* {tips_str}",
      +        role=MessageRole.USER,
      +    )
      +
      +
      +
      + +
      + + +
      + + + +

      +UserMessage(content) + +

      + + +
      + +

      Create a user message.

      + + + +

      Parameters:

      + + + + + + + + + + + + + + + + + +
      NameTypeDescriptionDefault
      content + str + +
      +

      The content of the message.

      +
      +
      + required +
      + + + +

      Returns:

      + + + + + + + + + + + + + +
      Name TypeDescription
      message + Message + +
      +

      A user message.

      +
      +
      + +
      + Source code in instructor/dsl/messages/user.py +
      26
      +27
      +28
      +29
      +30
      +31
      +32
      +33
      +34
      +35
      +36
      def UserMessage(content: str) -> Message:
      +    """
      +    Create a user message.
      +
      +    Parameters:
      +        content (str): The content of the message.
      +
      +    Returns:
      +        message (Message): A user message.
      +    """
      +    return Message(content=content, role=MessageRole.USER)
      +
      +
      +
      + +
      + + + +
      + +
      + +
      + + + + + + + + +
      +
      + + +
      + +
      + + + +
      +
      +
      +
      + + + + + + + + + \ No newline at end of file diff --git a/examples/autodataframe/index.html b/examples/autodataframe/index.html new file mode 100644 index 000000000..d39fa8dc5 --- /dev/null +++ b/examples/autodataframe/index.html @@ -0,0 +1,964 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Automated Dataframe Extraction - Instructor (openai_function_call) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + +
      + + + + + + + +
      + +
      + + + + +
      +
      + + + +
      +
      +
      + + + + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      + + + + + + + +

      Example: Converting Text into Dataframes

      +

      In this example, we'll demonstrate how to convert a text into dataframes using OpenAI Function Call. We will define the necessary data structures using Pydantic and show how to convert the text into dataframes.

      +
      +

      Motivation

      +

      Often times when we parse data we have an opportunity to extract structured data, what if we could extract an arbitrary number of tables with arbitrary schemas? By pulling out dataframes we could write tables or .csv files and attach them to our retrieved data.

      +
      +

      Defining the Data Structures

      +

      Let's start by defining the data structures required for this task: RowData, Dataframe, and Database.

      +
      from instructor import OpenAISchema
      +from pydantic import Field
      +from typing import List, Any
      +
      +
      +class RowData(OpenAISchema):
      +    row: List[Any] = Field(..., description="The values for each row")
      +    citation: str = Field(
      +        ..., description="The citation for this row from the original source data"
      +    )
      +
      +
      +class Dataframe(OpenAISchema):
      +    """
      +    Class representing a dataframe. This class is used to convert
      +    data into a frame that can be used by pandas.
      +    """
      +
      +    name: str = Field(..., description="The name of the dataframe")
      +    data: List[RowData] = Field(
      +        ...,
      +        description="Correct rows of data aligned to column names, Nones are allowed",
      +    )
      +    columns: List[str] = Field(
      +        ...,
      +        description="Column names relevant from source data, should be in snake_case",
      +    )
      +
      +    def to_pandas(self):
      +        import pandas as pd
      +
      +        columns = self.columns + ["citation"]
      +        data = [row.row + [row.citation] for row in self.data]
      +
      +        return pd.DataFrame(data=data, columns=columns)
      +
      +
      +class Database(OpenAISchema):
      +    """
      +    A set of correct named and defined tables as dataframes
      +    """
      +
      +    tables: List[Dataframe] = Field(
      +        ...,
      +        description="List of tables in the database",
      +    )
      +
      +

      The RowData class represents a single row of data in the dataframe. It contains a row attribute for the values in each row and a citation attribute for the citation from the original source data.

      +

      The Dataframe class represents a dataframe and consists of a name attribute, a list of RowData objects in the data attribute, and a list of column names in the columns attribute. It also provides a to_pandas method to convert the dataframe into a Pandas DataFrame.

      +

      The Database class represents a set of tables in a database. It contains a list of Dataframe objects in the tables attribute.

      +

      Using the Prompt Pipeline

      +

      To convert a text into dataframes, we'll use the Prompt Pipeline in OpenAI Function Call. We can define a function dataframe that takes a text as input and returns a Database object.

      +
      import openai
      +
      +def dataframe(data: str) -> Database:
      +    completion = openai.ChatCompletion.create(
      +        model="gpt-4-0613",
      +        temperature=0.1,
      +        functions=[Database.openai_schema],
      +        function_call={"name": Database.openai_schema["name"]},
      +        messages=[
      +            {
      +                "role": "system",
      +                "content": """Map this data into a dataframe a
      +                nd correctly define the correct columns and rows""",
      +            },
      +            {
      +                "role": "user",
      +                "content": f"{data}",
      +            },
      +        ],
      +        max_tokens=1000,
      +    )
      +    return Database.from_response(completion)
      +
      +

      The dataframe function takes a string data as input and creates a completion using the Prompt Pipeline. It prompts the model to map the data into a dataframe and define the correct columns and rows. The resulting completion is then converted into a Database object.

      +

      Evaluating an Example

      +

      Let's evaluate the example by converting a text into dataframes using the dataframe function and print the resulting dataframes.

      +
      dfs = dataframe("""My name is John and I am 25 years old. I live in 
      +New York and I like to play basketball. His name is 
      +Mike and he is 30 years old. He lives in San Francisco 
      +and he likes to play baseball. Sarah is 20 years old 
      +and she lives in Los Angeles. She likes to play tennis.
      +Her name is Mary and she is 35 years old. 
      +She lives in Chicago.
      +
      +On one team 'Tigers' the captain is John and there are 12 players.
      +On the other team 'Lions' the captain is Mike and there are 10 players.
      +""")
      +
      +for df in dfs.tables:
      +    print(df.name)
      +    print(df.to_pandas())
      +
      +

      The output will be:

      +
      People
      +Name  Age           City Favorite Sport
      +0   John   25       New York     Basketball
      +1   Mike   30  San Francisco       Baseball
      +2  Sarah   20    Los Angeles         Tennis
      +3   Mary   35        Chicago           None
      +
      +Teams
      +Team Name Captain  Number of Players
      +0    Tigers    John                 12
      +1     Lions    Mike                 10
      +
      + + + + + + + + +
      +
      + + +
      + +
      + + + +
      +
      +
      +
      + + + + + + + + + \ No newline at end of file diff --git a/examples/exact_citations/index.html b/examples/exact_citations/index.html new file mode 100644 index 000000000..9551f9241 --- /dev/null +++ b/examples/exact_citations/index.html @@ -0,0 +1,1021 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Exact Citations - Instructor (openai_function_call) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + +
      + + + + + + + +
      + +
      + + + + +
      +
      + + + +
      +
      +
      + + + + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      + + + + + + + +

      Example: Answering Questions with Citations

      +

      In this example, we'll demonstrate how to use OpenAI Function Call to ask an AI a question and get back an answer with correct citations. We'll define the necessary data structures using Pydantic and show how to retrieve the citations for each answer.

      +
      +

      Motivation

      +

      When using AI models to answer questions, it's important to provide accurate and reliable information with appropriate citations. By including citations for each statement, we can ensure the information is backed by reliable sources and help readers verify the information themselves.

      +
      +

      Defining the Data Structures

      +

      Let's start by defining the data structures required for this task: Fact and QuestionAnswer.

      +
      +

      Prompting as documentation

      +

      Make sure to include detailed and useful docstrings and fields for your class definitions. Naming becomes very important since they are semantically meaningful in the prompt.

      +
        +
      • substring_quote performs better than quote since it suggests it should be a substring of the original content.
      • +
      • Notice that there are instructions on splitting facts in the docstring which will be used by OpenAI
      • +
      +
      +
      import openai
      +from pydantic import Field, BaseModel
      +from typing import List
      +from instructor import OpenAISchema
      +
      +
      +class Fact(BaseModel):
      +    """
      +    Each fact has a body and a list of sources.
      +    If there are multiple facts, make sure to break them apart such that each one only uses a set of sources that are relevant to it.
      +    """
      +
      +    fact: str = Field(..., description="Body of the sentence as part of a response")
      +    substring_quote: List[str] = Field(
      +        ...,
      +        description="Each source should be a direct quote from the context, as a substring of the original content",
      +    )
      +
      +    def _get_span(self, quote, context, errs=100):
      +        import regex
      +
      +        minor = quote
      +        major = context
      +
      +        errs_ = 0
      +        s = regex.search(f"({minor}){{e<={errs_}}}", major)
      +        while s is None and errs_ <= errs:
      +            errs_ += 1
      +            s = regex.search(f"({minor}){{e<={errs_}}}", major)
      +
      +        if s is not None:
      +            yield from s.spans()
      +
      +    def get_spans(self, context):
      +        for quote in self.substring_quote:
      +            yield from self._get_span(quote, context)
      +
      +
      +class QuestionAnswer(OpenAISchema):
      +    """
      +    Class representing a question and its answer as a list of facts, where each fact should have a source.
      +    Each sentence contains a body and a list of sources.
      +    """
      +
      +    question: str = Field(..., description="Question that was asked")
      +    answer: List[Fact] = Field(
      +        ...,
      +        description="Body of the answer, each fact should be its separate object with a body and a list of sources",
      +    )
      +
      +

      The Fact class represents a single statement in the answer. It contains a fact attribute for the body of the sentence and a substring_quote attribute for the sources, which are direct quotes from the context.

      +

      The QuestionAnswer class represents a question and its answer. It consists of a question attribute for the question asked and a list of Fact objects in the answer attribute.

      +
      +

      Embedding computation

      +

      While it's not the best idea to get too crazy with adding 100 methods to your class +collocating some computation is oftentimes useful, here we implement the substring search directly with the Fact class.

      +
      +

      Asking AI a Question

      +

      To ask the AI a question and get back an answer with citations, we can define a function ask_ai that takes a question and context as input and returns a QuestionAnswer object.

      +
      +

      Prompting Tip: Expert system

      +

      Expert prompting is a great trick to get results, it can be easily done by saying things like:

      +
        +
      • you are an world class expert that can correctly ...
      • +
      • you are jeff dean give me a code review ...
      • +
      +
      +
      def ask_ai(question: str, context: str) -> QuestionAnswer:
      +    """
      +    Function to ask AI a question and get back an Answer object.
      +    but should be updated to use the actual method for making a request to the AI.
      +
      +    Args:
      +        question (str): The question to ask the AI.
      +        context (str): The context for the question.
      +
      +    Returns:
      +        Answer: The Answer object.
      +    """
      +
      +    # Making a request to the hypothetical 'openai' module
      +    completion = openai.ChatCompletion.create(
      +        model="gpt-3.5-turbo-0613",
      +        temperature=0.2,
      +        max_tokens=1000,
      +        functions=[QuestionAnswer.openai_schema],
      +        function_call={"name": QuestionAnswer.openai_schema["name"]},
      +        messages=[
      +            {
      +                "role": "system",
      +                "content": f"You are a world class algorithm to answer questions with correct and exact citations. ",
      +            },
      +            {"role": "user", "content": f"Answer question using the following context"},
      +            {"role": "user", "content": f"{context}"},
      +            {"role": "user", "content": f"Question: {question}"},
      +            {
      +                "role": "user",
      +                "content": f"Tips: Make sure to cite your sources, and use the exact words from the context.",
      +            },
      +        ],
      +    )
      +
      +    # Creating an Answer object from the completion response
      +    return QuestionAnswer.from_response(completion)
      +
      +

      The ask_ai function takes a string question and a string context as input. It makes a completion request to the AI model, providing the question and context as part of the prompt. The resulting completion is then converted into a QuestionAnswer object.

      +

      Evaluating an Example

      +

      Let's evaluate the example by asking the AI a question and getting back an answer with citations. We'll ask the question "What did the author do during college?" with the given context.

      +
      +

      Highlight

      +

      This just adds some color and captures the citation in <>

      +
      def highlight(text, span):
      +    return (
      +        "..."
      +        + text[span[0] - 50 : span[0]].replace("\n", "")
      +        + "\033[91m"
      +        + "<"
      +        + text[span[0] : span[1]].replace("\n", "")
      +        + "> "
      +        + "\033[0m"
      +        + text[span[1] : span[1] + 20].replace("\n", "")
      +        + "..."
      +    )
      +
      +
      +
      question = "What did the author do during college?"
      +context = """
      +My name is Jason Liu, and I grew up in Toronto Canada but I was born in China.
      +I went to an arts high school but in university I studied Computational Mathematics and physics. 
      +As part of coop I worked at many companies including Stitchfix, Facebook.
      +I also started the Data Science club at the University of Waterloo and I was the president of the club for 2 years.
      +"""
      +
      +answer = ask_ai(question, context)
      +
      +print("Question:", question)
      +print()
      +for fact in answer.answer:
      +    print("Statement:", fact.fact)
      +    for span in fact.get_spans(context):
      +        print("Citation:", highlight(context, span))
      +    print()
      +
      +

      In this code snippet, we print the question and iterate over each fact in the answer. For each fact, we print the statement and highlight the corresponding citation in the context using the highlight function.

      +

      Here is the expected output for the example:

      +
      Question: What did the author do during college?
      +
      +Statement: The author studied Computational Mathematics and physics in university.
      +Citation: ...s born in China.I went to an arts high school but <in university I studied Computational Mathematics and physics> . As part of coop I...
      +
      +Statement: The author started the Data Science club at the University of Waterloo and was the president of the club for 2 years.
      +Citation: ...y companies including Stitchfix, Facebook.I also <started the Data Science club at the University of Waterloo>  and I was the presi...
      +Citation: ... club at the University of Waterloo and I was the <president of the club for 2 years> ...
      +
      +

      The output includes the question, followed by each statement in the answer with its corresponding citation highlighted in the context.

      +

      Feel free to try this code with different questions and contexts to see how the AI responds with accurate citations.

      + + + + + + + + +
      +
      + + +
      + +
      + + + +
      +
      +
      +
      + + + + + + + + + \ No newline at end of file diff --git a/examples/gpt-engineer/index.html b/examples/gpt-engineer/index.html new file mode 100644 index 000000000..567bd9455 --- /dev/null +++ b/examples/gpt-engineer/index.html @@ -0,0 +1,1227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Creating multiple file programs - Instructor (openai_function_call) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + +
      + + + + + + + +
      + +
      + + + + +
      +
      + + + +
      +
      +
      + + + + + + +
      +
      +
      + + + + + + + +
      +
      + + + + + + + +

      Example: Creating Multiple Files Program

      +

      This example shows how to create a multiple files program based on specifications by utilizing the OpenAI Function Call. We will define the necessary data structures using Pydantic and demonstrate how to convert a specification (prompt) into multiple files.

      +
      +

      Motivation

      +

      Creating multiple file programs based on specifications is a challenging and rewarding skill that can help you build complex and scalable applications. +With OpenAI Function Call, you can leverage the power of language models to generate an entire codebase and code snippets that match your specifications.

      +
      +

      Defining the Data Structures

      +

      Let's start by defining the data structure of File and Program.

      +
      from typing import List
      +from pydantic import Field
      +from instructor import OpenAISchema
      +
      +
      +class File(OpenAISchema):
      +    """
      +    Correctly named file with contents.
      +    """
      +
      +    file_name: str = Field(
      +        ..., description="The name of the file including the extension"
      +    )
      +    body: str = Field(..., description="Correct contents of a file")
      +
      +    def save(self):
      +        with open(self.file_name, "w") as f:
      +            f.write(self.body)
      +
      +
      +class Program(OpenAISchema):
      +    """
      +    Set of files that represent a complete and correct program
      +    """
      +
      +    files: List[File] = Field(..., description="List of files")
      +
      +

      The File class represents a single file or script, and it contains a name attribute and body for the text content of the file. +Notice that we added the save method to the File class. This method is used to writes the body of the file to disk using the name as path.

      +

      The Program class represents a collection of files that form a complete and correct program. +It contains a list of File objects in the files attribute.

      +

      Calling Completions

      +

      To create the files, we will use the base openai API. +We can define a function that takes in a string and returns a Program object.

      +
      import openai
      +
      +def develop(data: str) -> Program:
      +    completion = openai.ChatCompletion.create(
      +        model="gpt-3.5-turbo-0613",
      +        temperature=0.1,
      +        functions=[Program.openai_schema],
      +        function_call={"name": Program.openai_schema["name"]},
      +        messages=[
      +            {
      +                "role": "system",
      +                "content": "You are a world class programming AI capable of writing correct python scripts and modules. You will name files correct, include __init__.py files and write correct python code with correct imports.",
      +            },
      +            {
      +                "role": "user",
      +                "content": data,
      +            },
      +        ],
      +        max_tokens=1000,
      +    )
      +    return Program.from_response(completion)
      +
      +

      Evaluating an Example

      +

      Let's evaluate the example by specifying the program to create and print the resulting files.

      +
      program = develop(
      +        """
      +        Create a fastapi app with a readme.md file and a main.py file with 
      +        some basic math functions. the datamodels should use pydantic and 
      +        the main.py should use fastapi. the readme.md should have a title 
      +        and a description. The readme should contain some helpful infromation 
      +        and a curl example"""
      +    )
      +
      +for file in program.files:
      +    print(file.file_name)
      +    print("-")
      +    print(file.body)
      +    print("\n\n\n")
      +
      +

      The output will be: +

      # readme.md
      +-
      +    # FastAPI App
      +
      +    This is a FastAPI app that provides some basic math functions.
      +
      +    ## Usage
      +
      +    To use this app, follow the instructions below:
      +
      +    1. Install the required dependencies by running `pip install -r requirements.txt`.
      +    2. Start the app by running `uvicorn main:app --reload`.
      +    3. Open your browser and navigate to `http://localhost:8000/docs` to access the Swagger UI documentation.
      +
      +    ## Example
      +
      +    You can use the following curl command to test the `/add` endpoint:
      +
      +    ```bash
      +    $ curl -X POST -H "Content-Type: application/json" -d '{"a": 2, "b": 3}' http://localhost:8000/add
      +    ```
      +
      +
      # main.py
      +-
      +    from fastapi import FastAPI
      +    from pydantic import BaseModel
      +
      +    app = FastAPI()
      +
      +
      +    class Numbers(BaseModel):
      +        a: int
      +        b: int
      +
      +
      +    @app.post('/add')
      +    def add_numbers(numbers: Numbers):
      +        return {'result': numbers.a + numbers.b}
      +
      +
      +    @app.post('/subtract')
      +    def subtract_numbers(numbers: Numbers):
      +        return {'result': numbers.a - numbers.b}
      +
      +
      +    @app.post('/multiply')
      +    def multiply_numbers(numbers: Numbers):
      +        return {'result': numbers.a * numbers.b}
      +
      +
      +    @app.post('/divide')
      +    def divide_numbers(numbers: Numbers):
      +        if numbers.b == 0:
      +            return {'error': 'Cannot divide by zero'}
      +        return {'result': numbers.a / numbers.b}
      +
      +
      # requirements.txt
      +-
      +    fastapi
      +    uvicorn
      +    pydantic
      +

      +

      Add Refactoring Capabilities

      +

      This second part of the example shows how OpenAI API can be used to update the multiples files previously created, based on new specifications.

      +

      In order to do that, we'll rely on the standard unidiff format.

      +

      This will be our definition for a change in our code base:

      +
      from pydantic import Field
      +from instructor import OpenAISchema
      +
      +class Diff(OpenAISchema):
      +    """
      +    Changes that must be correctly made in a program's code repository defined as a
      +    complete diff (Unified Format) file which will be used to `patch` the repository.
      +
      +    Example:
      +      --- /path/to/original timestamp
      +      +++ /path/to/new  timestamp
      +      @@ -1,3 +1,9 @@
      +      +This is an important
      +      +notice! It should
      +      +therefore be located at
      +      +the beginning of this
      +      +document!
      +      +
      +       This part of the
      +       document has stayed the
      +       same from version to
      +      @@ -8,13 +14,8 @@
      +       compress the size of the
      +       changes.
      +      -This paragraph contains
      +      -text that is outdated.
      +      -It will be deleted in the
      +      -near future.
      +      -
      +       It is important to spell
      +      -check this dokument. On
      +      +check this document. On
      +       the other hand, a
      +       misspelled word isn't
      +       the end of the world.
      +      @@ -22,3 +23,7 @@
      +       this paragraph needs to
      +       be changed. Things can
      +       be added after it.
      +      +
      +      +This paragraph contains
      +      +important new additions
      +      +to this document.
      +    """
      +
      +    diff: str = Field(
      +        ...,
      +        description=(
      +            "Changes in a code repository correctly represented in 'diff' format, "
      +            "correctly escaped so it could be used in a JSON"
      +        ),
      +    )
      +
      +

      The diff class represents a diff file, with a set of changes that can be applied to our program using a tool like patch or Git.

      +

      Calling Refactor Completions

      +

      We'll define a function that will pass the program and the new specifications to the OpenAI API:

      +
      import openai
      +from generate import Program
      +
      +def refactor(new_requirements: str, program: Program) -> Diff:
      +    program_description = "\n".join(
      +        [f"{code.file_name}\n[[[\n{code.body}\n]]]\n" for code in program.files]
      +    )
      +    completion = openai.ChatCompletion.create(
      +        # model="gpt-3.5-turbo-0613",
      +        model="gpt-4",
      +        temperature=0,
      +        functions=[Diff.openai_schema],
      +        function_call={"name": Diff.openai_schema["name"]},
      +        messages=[
      +            {
      +                "role": "system",
      +                "content": "You are a world class programming AI capable of refactor "
      +                "existing python repositories. You will name files correct, include "
      +                "__init__.py files and write correct python code, with correct imports. "
      +                "You'll deliver your changes in valid 'diff' format so that they could "
      +                "be applied using the 'patch' command. "
      +                "Make sure you put the correct line numbers, "
      +                "and that all lines that must be changed are correctly marked.",
      +            },
      +            {
      +                "role": "user",
      +                "content": new_requirements,
      +            },
      +            {
      +                "role": "user",
      +                "content": program_description,
      +            },
      +        ],
      +        max_tokens=1000,
      +    )
      +    return Diff.from_response(completion)
      +
      +

      Notice we're using here the version gpt-4 of the model, which is more powerful but, also, more expensive.

      +

      Creating an Example Refactoring

      +

      To tests these refactoring, we'll use the program object, generated in the first part of this example.

      +
      changes = refactor(
      +    new_requirements="Refactor this code to use flask instead.",
      +    program=program,
      +)
      +print(changes.diff)
      +
      +

      The output will be this:

      +
      --- readme.md
      ++++ readme.md
      +@@ -1,9 +1,9 @@
      + # FastAPI App
      +
      +-This is a FastAPI app that provides some basic math functions.
      ++This is a Flask app that provides some basic math functions.
      +
      + ## Usage
      +
      + To use this app, follow the instructions below:
      +
      + 1. Install the required dependencies by running `pip install -r requirements.txt`.
      +-2. Start the app by running `uvicorn main:app --reload`.
      ++2. Start the app by running `flask run`.
      + 3. Open your browser and navigate to `http://localhost:5000/docs` to access the Swagger UI documentation.
      +
      + ## Example
      +
      + To perform a basic math operation, you can use the following curl command:
      +
      + ```bash
      +-curl -X POST -H "Content-Type: application/json" -d '{"operation": "add", "operands": [2, 3]}' http://localhost:8000/calculate
      ++curl -X POST -H "Content-Type: application/json" -d '{"operation": "add", "operands": [2, 3]}' http://localhost:5000/calculate
      + ```
      +
      +--- main.py
      ++++ main.py
      +@@ -1,29 +1,29 @@
      +-from fastapi import FastAPI
      +-from pydantic import BaseModel
      ++from flask import Flask, request, jsonify
      +
      +-app = FastAPI()
      ++app = Flask(__name__)
      +
      +
      +-class Operation(BaseModel):
      +-    operation: str
      +-    operands: list
      ++@app.route('/calculate', methods=['POST'])
      ++def calculate():
      ++    data = request.get_json()
      ++    operation = data.get('operation')
      ++    operands = data.get('operands')
      +
      +
      +-@app.post('/calculate')
      +-async def calculate(operation: Operation):
      +-    if operation.operation == 'add':
      +-        result = sum(operation.operands)
      +-    elif operation.operation == 'subtract':
      +-        result = operation.operands[0] - sum(operation.operands[1:])
      +-    elif operation.operation == 'multiply':
      ++    if operation == 'add':
      ++        result = sum(operands)
      ++    elif operation == 'subtract':
      ++        result = operands[0] - sum(operands[1:])
      ++    elif operation == 'multiply':
      +         result = 1
      +-        for operand in operation.operands:
      ++        for operand in operands:
      +             result *= operand
      +-    elif operation.operation == 'divide':
      +-        result = operation.operands[0]
      +-        for operand in operation.operands[1:]:
      ++    elif operation == 'divide':
      ++        result = operands[0]
      ++        for operand in operands[1:]:
      +             result /= operand
      +     else:
      +         result = None
      +-    return {'result': result}
      ++    return jsonify({'result': result})
      +
      +--- requirements.txt
      ++++ requirements.txt
      +@@ -1,3 +1,2 @@
      +-fastapi
      +-uvicorn
      +-pydantic
      ++flask
      ++flask-cors
      +
      + + + + + + + + +
      +
      + + +
      + +
      + + + +
      +
      +
      +
      + + + + + + + + + \ No newline at end of file diff --git a/examples/index.html b/examples/index.html new file mode 100644 index 000000000..d58d9bcb9 --- /dev/null +++ b/examples/index.html @@ -0,0 +1,871 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Overview - Instructor (openai_function_call) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + +
      + + + + + + + +
      + +
      + + + + +
      +
      + + + +
      +
      +
      + + + + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      + + + + + + + +

      Function Calls by Example

      +

      Welcome to the examples page. Here you will find emails that highlight a range of use cases, on how to use our code and examples demonstrating various features and functionalities.

      + + +

      Details

      +

      In this section, you will find examples demonstrating different aspects of our project's functionality.

      +
        +
      • +

        Segmented Search: Learn how to perform segmented search using a multi task definition using function calling

        +
      • +
      • +

        One shot Query Planning: Explore how to plan and decompose a complex query into multiple subqueries in a single request.

        +
      • +
      • +

        Recursive Schemas: Understand how to work with recursive schemas, and also why flat is better than nested.

        +
      • +
      • +

        Exact Citations: Find out how to generate exact citations by using smart prompting and regular expressions

        +
      • +
      • +

        Automated Dataframe Extraction: Discover how to automate dataframe extraction to not only return a table, but possibly multiple tables.

        +
      • +
      • +

        Creating Multiple File Programs: Master how to create multiple file programs based on specification using function calling.

        +
      • +
      +

      Feel free to explore these examples to gain a better understanding of various patterns on how creative prompting, description, and structuring of OpenAISchema and unlock new capabilities.

      +

      If you have any questions or need further assistance, please refer to the specific example documentation or reach out to our support team.

      +

      Happy exploring!

      + + + + + + + + +
      +
      + + +
      + +
      + + + +
      +
      +
      +
      + + + + + + + + + \ No newline at end of file diff --git a/examples/planning-tasks/index.html b/examples/planning-tasks/index.html new file mode 100644 index 000000000..e2f0f1f82 --- /dev/null +++ b/examples/planning-tasks/index.html @@ -0,0 +1,979 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + One shot Query Planning - Instructor (openai_function_call) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + +
      + + + + + + + +
      + +
      + + + + +
      +
      + + + +
      +
      +
      + + + + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      + + + + + + + +

      Example: Planning and Executing a Query Plan

      +

      This example demonstrates how to use the OpenAI Function Call ChatCompletion model to plan and execute a query plan in a question-answering system. By breaking down a complex question into smaller sub-questions with defined dependencies, the system can systematically gather the necessary information to answer the main question.

      +
      +

      Motivation

      +

      The goal of this example is to showcase how query planning can be used to handle complex questions, facilitate iterative information gathering, automate workflows, and optimize processes. By leveraging the OpenAI Function Call model, you can design and execute a structured plan to find answers effectively.

      +

      Use Cases:

      +
        +
      • Complex question answering
      • +
      • Iterative information gathering
      • +
      • Workflow automation
      • +
      • Process optimization
      • +
      +
      +

      With the OpenAI Function Call model, you can customize the planning process and integrate it into your specific application to meet your unique requirements.

      +

      Defining the Structures

      +

      Let's define the necessary Pydantic models to represent the query plan and the queries.

      +
      import enum
      +from typing import List
      +
      +from pydantic import Field
      +from instructor import OpenAISchema
      +
      +
      +class QueryType(str, enum.Enum):
      +    """Enumeration representing the types of queries that can be asked to a question answer system."""
      +
      +    SINGLE_QUESTION = "SINGLE"
      +    MERGE_MULTIPLE_RESPONSES = "MERGE_MULTIPLE_RESPONSES"
      +
      +
      +class Query(OpenAISchema):
      +    """Class representing a single question in a query plan."""
      +
      +    id: int = Field(..., description="Unique id of the query")
      +    question: str = Field(
      +        ...,
      +        description="Question asked using a question answering system",
      +    )
      +    dependancies: List[int] = Field(
      +        default_factory=list,
      +        description="List of sub questions that need to be answered before asking this question",
      +    )
      +    node_type: QueryType = Field(
      +        default=QueryType.SINGLE_QUESTION,
      +        description="Type of question, either a single question or a multi-question merge",
      +    )
      +
      +
      +class QueryPlan(OpenAISchema):
      +    """Container class representing a tree of questions to ask a question answering system."""
      +
      +    query_graph: List[Query] = Field(
      +        ..., description="The query graph representing the plan"
      +    )
      +
      +    def _dependencies(self, ids: List[int]) -> List[Query]:
      +        """Returns the dependencies of a query given their ids."""
      +        return [q for q in self.query_graph if q.id in ids]
      +
      +
      +

      Graph Generation

      +

      Notice that this example produces a flat list of items with dependencies that resemble a graph, while pydantic allows for recursive definitions, it's much easier and less confusing for the model to generate flat schemas rather than recursive schemas. If you want to see a recursive example, see recursive schemas

      +
      +

      Planning a Query Plan

      +

      Now, let's demonstrate how to plan and execute a query plan using the defined models and the OpenAI API.

      +
      import asyncio
      +
      +import openai
      +
      +def query_planner(question: str) -> QueryPlan:
      +    PLANNING_MODEL = "gpt-4-0613"
      +
      +    messages = [
      +        {
      +            "role": "system",
      +            "content": "You are a world class query planning algorithm capable ofbreaking apart questions into its dependency queries such that the answers can be used to inform the parent question. Do not answer the questions, simply provide a correct compute graph with good specific questions to ask and relevant dependencies. Before you call the function, think step-by-step to get a better understanding of the problem.",
      +        },
      +        {
      +            "role": "user",
      +            "content": f"Consider: {question}\nGenerate the correct query plan.",
      +        },
      +    ]
      +
      +    completion = openai.ChatCompletion.create(
      +        model=PLANNING_MODEL,
      +        temperature=0,
      +        functions=[QueryPlan.openai_schema],
      +        function_call={"name": QueryPlan.openai_schema["name"]},
      +        messages=messages,
      +        max_tokens=1000,
      +    )
      +    root = QueryPlan.from_response(completion)
      +    return root
      +
      +
      plan = query_planner(
      +    "What is the difference in populations of Canada and the Jason's home country?"
      +)
      +plan.dict()
      +
      +
      +

      No RAG

      +

      While we build the query plan in this example, we do not propose a method to actually answer the question. You can implement your own answer function that perhaps makes a retrival and calls openai for retrival augmented generation. That step would also make use of function calls but goes beyond the scope of this example.

      +
      +
      {'query_graph': [{'dependancies': [],
      +                    'id': 1,
      +                    'node_type': <QueryType.SINGLE_QUESTION: 'SINGLE'>,
      +                    'question': "Identify Jason's home country"},
      +                    {'dependancies': [],
      +                    'id': 2,
      +                    'node_type': <QueryType.SINGLE_QUESTION: 'SINGLE'>,
      +                    'question': 'Find the population of Canada'},
      +                    {'dependancies': [1],
      +                    'id': 3,
      +                    'node_type': <QueryType.SINGLE_QUESTION: 'SINGLE'>,
      +                    'question': "Find the population of Jason's home country"},
      +                    {'dependancies': [2, 3],
      +                    'id': 4,
      +                    'node_type': <QueryType.SINGLE_QUESTION: 'SINGLE'>,
      +                    'question': 'Calculate the difference in populations between '
      +                                "Canada and Jason's home country"}]} 
      +
      +

      In the above code, we define a query_planner function that takes a question as input and generates a query plan using the OpenAI API.

      +

      Conclusion

      +

      In this example, we demonstrated how to use the OpenAI Function Call ChatCompletion model to plan and execute a query plan using a question-answering system. We defined the necessary structures using Pydantic, created a query planner function.

      +

      If you want to see multiple versions of this style of code, please visit:

      +
        +
      1. query planning example
      2. +
      3. task planning with topo sort
      4. +
      +

      Feel free to modify the code to fit your specific use case and explore other possibilities of using the OpenAI Function Call model to plan and execute complex workflows.

      + + + + + + + + +
      +
      + + +
      + +
      + + + +
      +
      +
      +
      + + + + + + + + + \ No newline at end of file diff --git a/examples/recursive/index.html b/examples/recursive/index.html new file mode 100644 index 000000000..737a97a49 --- /dev/null +++ b/examples/recursive/index.html @@ -0,0 +1,989 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Recursive Schemas - Instructor (openai_function_call) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + +
      + + + + + + + +
      + +
      + + + + +
      +
      + + + +
      +
      +
      + + + + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      + + + + + + + +

      Example: Parsing a Directory Tree

      +

      In this example, we will demonstrate how define and use a recursive class definition to convert a string representing a directory tree into a filesystem structure using OpenAI's function call api. We will define the necessary structures using Pydantic, create a function to parse the tree, and provide an example of how to use it.

      +

      Defining the Structures

      +

      We will use Pydantic to define the necessary data structures representing the directory tree and its nodes. We have two classes, Node and DirectoryTree, which are used to model individual nodes and the entire directory tree, respectively.

      +
      +

      Flat is better than nested

      +

      While it's easier to model things as nested, returning flat items with dependencies tends to yield better results. For a flat example, check out planning tasks where we model a query plan as a dag.

      +
      +
      import enum
      +from typing import List
      +from pydantic import Field
      +from instructor import OpenAISchema
      +
      +class NodeType(str, enum.Enum):
      +    """Enumeration representing the types of nodes in a filesystem."""
      +    FILE = "file"
      +    FOLDER = "folder"
      +
      +class Node(OpenAISchema):
      +    """
      +    Class representing a single node in a filesystem. Can be either a file or a folder.
      +    Note that a file cannot have children, but a folder can.
      +
      +    Args:
      +        name (str): The name of the node.
      +        children (List[Node]): The list of child nodes (if any).
      +        node_type (NodeType): The type of the node, either a file or a folder.
      +
      +    Methods:
      +        print_paths: Prints the path of the node and its children.
      +    """
      +    name: str = Field(..., description="Name of the folder")
      +    children: List["Node"] = Field(
      +        default_factory=list,
      +        description="List of children nodes, only applicable for folders, files cannot have children",
      +    )
      +    node_type: NodeType = Field(
      +        default=NodeType.FILE,
      +        description="Either a file or folder, use the name to determine which it could be",
      +    )
      +
      +    def print_paths(self, parent_path=""):
      +        """Prints the path of the node and its children."""
      +        if self.node_type == NodeType.FOLDER:
      +            path = f"{parent_path}/{self.name}" if parent_path != "" else self.name
      +            print(path, self.node_type)
      +            if self.children is not None:
      +                for child in self.children:
      +                    child.print_paths(path)
      +        else:
      +            print(f"{parent_path}/{self.name}", self.node_type)
      +
      +class DirectoryTree(OpenAISchema):
      +    """
      +    Container class representing a directory tree.
      +
      +    Args:
      +        root (Node): The root node of the tree.
      +
      +    Methods:
      +        print_paths: Prints the paths of the root node and its children.
      +    """
      +    root: Node = Field(..., description="Root folder of the directory tree")
      +
      +    def print_paths(self):
      +        """Prints the paths of the root node and its children."""
      +        self.root.print_paths()
      +
      +Node.update_forward_refs()
      +DirectoryTree.update_forward_refs()
      +
      +

      The Node class represents a single node in the directory tree. It has a name, a list of children nodes (applicable only to folders), and a node type (either a file or a folder). The print_paths method can be used to print the path of the node and its children.

      +

      The DirectoryTree class represents the entire directory tree. It has a single attribute, root, which is the root node of the tree. The print_paths method can be used to print the paths of the root node and its children.

      +

      Parsing the Tree

      +

      We define a function parse_tree_to_filesystem to convert a string representing a directory tree into a filesystem structure using OpenAI.

      +
      import openai
      +
      +def parse_tree_to_filesystem(data: str) -> DirectoryTree:
      +    """
      +    Convert a string representing a directory tree into a filesystem structure
      +    using OpenAI's GPT-3 model.
      +
      +    Args:
      +        data (str): The string to convert into a filesystem.
      +
      +    Returns:
      +        DirectoryTree: The directory tree representing the filesystem.
      +    """
      +
      +    completion = openai.ChatCompletion.create(
      +        model="gpt-3.5-turbo-0613",
      +        temperature=0.2,
      +        functions=[DirectoryTree.openai_schema],
      +        function_call={"name": DirectoryTree.openai_schema["name"]},
      +        messages=[
      +            {
      +                "role": "system",
      +                "content": "You are a perfect file system parsing algorithm. You are given a string representing a directory tree. You must return the correct filesystem structure.",
      +            },
      +            {
      +                "role": "user",
      +                "content": f"Consider the data below:\n{data} and return the correctly labeled filesystem",
      +            },
      +        ],
      +        max_tokens=1000,
      +    )
      +    root = DirectoryTree.from_response(completion)
      +    return root
      +
      +

      The parse_tree_to_filesystem function takes a string data representing the directory tree and returns a DirectoryTree object representing the filesystem structure. It uses the OpenAI Chat API to complete the prompt and extract the directory tree.

      +

      Example Usage

      +

      Let's demonstrate how to use the parse_tree_to_filesystem

      +

      function with an example:

      +
      root = parse_tree_to_filesystem(
      +    """
      +    root
      +    ├── folder1
      +    │   ├── file1.txt
      +    │   └── file2.txt
      +    └── folder2
      +        ├── file3.txt
      +        └── subfolder1
      +            └── file4.txt
      +    """
      +)
      +root.print_paths()
      +
      +

      In this example, we call parse_tree_to_filesystem with a string representing a directory tree.

      +

      After parsing the string into a DirectoryTree object, we call root.print_paths() to print the paths of the root node and its children. The output of this example will be:

      +
      root                               NodeType.FOLDER
      +root/folder1                       NodeType.FOLDER
      +root/folder1/file1.txt             NodeType.FILE
      +root/folder1/file2.txt             NodeType.FILE
      +root/folder2                       NodeType.FOLDER
      +root/folder2/file3.txt             NodeType.FILE
      +root/folder2/subfolder1            NodeType.FOLDER
      +root/folder2/subfolder1/file4.txt  NodeType.FILE
      +
      +

      This demonstrates how to use OpenAI's GPT-3 model to parse a string representing a directory tree and obtain the correct filesystem structure.

      +

      I hope this example helps you understand how to leverage OpenAI Function Call for parsing recursive trees. If you have any further questions, feel free to ask!

      + + + + + + + + +
      +
      + + +
      + +
      + + + +
      +
      +
      +
      + + + + + + + + + \ No newline at end of file diff --git a/examples/search/index.html b/examples/search/index.html new file mode 100644 index 000000000..be2ea17e1 --- /dev/null +++ b/examples/search/index.html @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Segmented Search - Instructor (openai_function_call) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + +
      + + + + + + + +
      + +
      + + + + +
      +
      + + + +
      +
      +
      + + + + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      + + + + + + + +

      Example: Segmenting Search Queries

      +

      In this example, we will demonstrate how to leverage the MultiTask and enum.Enum features of OpenAI Function Call to segment search queries. We will define the necessary structures using Pydantic and demonstrate how segment queries into multiple sub queries and execute them in parallel with asyncio.

      +
      +

      Motivation

      +

      Extracting a list of tasks from text is a common use case for leveraging language models. This pattern can be applied to various applications, such as virtual assistants like Siri or Alexa, where understanding user intent and breaking down requests into actionable tasks is crucial. In this example, we will demonstrate how to use OpenAI Function Call to segment search queries and execute them in parallel.

      +
      +

      Defining the Structures

      +

      Let's model the problem as breaking down a search request into a list of search queries. We will use an enum to represent different types of searches and take advantage of Python objects to add additional query logic.

      +
      import enum
      +from pydantic import Field
      +from instructor import OpenAISchema
      +
      +class SearchType(str, enum.Enum):
      +    """Enumeration representing the types of searches that can be performed."""
      +    VIDEO = "video"
      +    EMAIL = "email"
      +
      +class Search(OpenAISchema):
      +    """
      +    Class representing a single search query.
      +    """
      +    title: str = Field(..., description="Title of the request")
      +    query: str = Field(..., description="Query to search for relevant content")
      +    type: SearchType = Field(..., description="Type of search")
      +
      +    async def execute(self):
      +        print(f"Searching for `{self.title}` with query `{self.query}` using `{self.type}`")
      +
      +

      Notice that we have added the execute method to the Search class. This method can be used to route the search query based on the enum type. You can add logic specific to each search type in the execute method.

      +

      Next, let's define a class to represent multiple search queries.

      +
      from typing import List
      +
      +class MultiSearch(OpenAISchema):
      +    "Correctly segmented set of search results"
      +    tasks: List[Search]
      +
      +

      The MultiSearch class has a single attribute, tasks, which is a list of Search objects.

      +

      This pattern is so common that we've added a helper function MultiTask to makes this simpler

      +
      from instructor.dsl import MultiTask
      +
      +MultiSearch = MultiTask(Search)
      +
      +

      Calling Completions

      +

      To segment a search query, we will use the base openai api. We can define a function that takes a string and returns segmented search queries using the MultiSearch class.

      +
      import openai
      +
      +def segment(data: str) -> MultiSearch:
      +    completion = openai.ChatCompletion.create(
      +        model="gpt-3.5-turbo-0613",
      +        temperature=0.1,
      +        functions=[MultiSearch.openai_schema],
      +        function_call={"name": MultiSearch.openai_schema["name"]},
      +        messages=[
      +            {
      +                "role": "user",
      +                "content": f"Consider the data below: '\n{data}' and segment it into multiple search queries",
      +            },
      +        ],
      +        max_tokens=1000,
      +    )
      +
      +    return MultiSearch.from_response(completion)
      +
      +

      The segment function takes a string data and creates a completion. It prompts the model to segment the data into multiple search queries and returns the result as a MultiSearch object.

      +

      Evaluating an Example

      +

      Let's evaluate an example by segmenting a search query and executing the segmented queries.

      +
      import asyncio
      +
      +queries = segment("Please send me the video from last week about the investment case study and also documents about your GDPR policy?")
      +
      +async def execute_queries(queries: Multisearch):
      +    await asyncio.gather(*[q.execute() for q in queries.tasks])
      +
      +loop = asyncio.get_event_loop()
      +loop.run_until_complete(execute_queries())
      +loop.close()
      +
      +

      In this example, we use the segment function to segment the search query. We then use asyncio to asynchronously execute the queries using the execute method defined in the Search class.

      +

      The output will be:

      +
      Searching for `Please send me the video from last week about the investment case study` with query `Please send me the video from last week about the investment case study` using `SearchType.VIDEO`
      +Searching for `also documents about your GDPR policy?` with query `also documents about your GDPR policy?` using `SearchType.EMAIL`
      +
      + + + + + + + + +
      +
      + + +
      + +
      + + + +
      +
      +
      +
      + + + + + + + + + \ No newline at end of file diff --git a/img/error2.png b/img/error2.png new file mode 100644 index 0000000000000000000000000000000000000000..6be80d8e057767dc6f05912ed393f0d9bb366663 GIT binary patch literal 86194 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�EAENHgcjrD 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 V{R!`^9*P2dDLzq?uaLC}{$CJWfad@J literal 0 HcmV?d00001 diff --git a/img/ide_support.png b/img/ide_support.png new file mode 100644 index 0000000000000000000000000000000000000000..8fde25d4e3bd187be020cda42c73ce7571bb0b46 GIT binary patch literal 117582 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%0Dp^$KdCo5m!>=%aX5 zZ9FLkT#qiPu$OE1*#ezp9LbTcoP7Y2P=y-J<}_zN)7Z7^et~(D#k)nv(_w@%m5%D> z!VD=`hXnbL4#}U%wcr6IjQHOo|9q}R53K@HSr2+RGMZ{0SsZCr5a(YpgptX9T9pMv z+7yAas&w4Q-_&*qY7#V*r}%`X&~!)5!aaiuU!Ys6X%jNA1ppswEZFTPo_AUYa&tcq z#~>;`Pv&10Lxt0r?Y+a8JvwXPZk+3Zv;9drs#Q56y4Q;b7MIgcPM30~EdQjm^KIW` zn^Ee$T+GW%zPvywgI!mU6_b9=yy@z)M(zfHVvf-OpV-!KDui#yU9 zUe3gM`&@}!w#2TFiu!b^9aV{f_+!R3esUL1%W$4@iZj8vKg?KUO@YilCI>)K)V_M~ zMvy?elxG?Gz_C*#X)$pUeDwlvglXs7aq^Kd@H&Q+g`C)GXKF09h?|`oU1e_LEmu`< zZF50G;Z`m+o2jB(_IXvYSpzfJPF|m`citurPm1o^N=aGW1delVDB-hjS55Xfq(nf40N$HSjhc4IZ(Tm?V@n8*1?f~1prUsrvy#* z)cSP)lmtEUb6g_a{4zd;?#I<%n&H~!^8`H>P&y`< z;OMjAIm;)!e0VVHP9ii(2V45yK$LGmiT-O0$|W+ay#l&)wYK_7!gpOM5vbo*+KL1N z?@r|LC234L2Rxh~8e!j6raxT^6SOC$+B&_^yi!#>7DjzH6a) zt|(~|_7*C^A&Z*abj0D)_kOo1_?d7|t8VLe80#Xst_kCwO>ysGu04+=#TGE*TeAB# zWb%5iyvFU-I&A87{q)F$zySeUiW3nc|`?xblYc8Rkq5p-_ zl%4On=Xd8S4JEw_C9yp>Laxt`Yjx_Z85kN{(D&te>LB$j&F+u={YC-Iz(aHnWpQH= zEcvCCPgm;q=~T?&{(0uag6F-Q)uo*yj&R-rC@Mv90j!)wIqgJs+4z)OX+j)4Hm2mA zNrKuj2&@0CCIu@g{vtKfKOt&^Q0%HlXs#mWz3c@hl&j|Jvw~w!M z`@I(ih%T;O_hEd)#qD#Sl0eVuS3@R021rmZVm|@4S3&c4jazb6@D#u)|Db3lcoU9% zqU57Xae0YgSS`Cag8?yJZeWH{AMHTo?aBlET+1)|NwnZ<-f(cP+6c5R+Ic*(=_UzG z;7|fLZ1rzLGLCMpP9K;-XnDR@J@g&`Kg4;OALX4k$K3NaG#oH5ig*M@>En4`Cb>+0 zinp%S3cbkdlvKmYgXdWcqJ;E$aHHf8+<7&x2Wp=? z5N8)Aj;qcg5K!JD5HbKf`fAmbM;F>exaocz#GnL{Taw#m(X$&yeYJzB2g?y|9dXGY zyIA?=npn_K2bZt$r&ND@K_6+8)P0K|%cbqv+;sE-^x;cK9Ss2a(oG9LNsi&;TewBh z;I6KnLx4->iUKaJkZwa1OuGw)H7 zSmp;X-YsMBSo@ti@bwc59cI7TI@PL!aKd1p&n+#hmW%iLJsi(S;95A+*uXzTd|H-q zar2_TJJqI&e|YG0PxQVzm#*$BU;vWZOsi&h9HZ$DjOg=|S+y{SDS$4HuS(Ga++We) z`@iD&&l|qN{11ER<64!XP&R|M3O+rbd26O40cnH-*fhO$#pflY{x9y3={~O!UrV2u zJnsJ8)MiklbX{G&_*}NO4TmuCkKy$%hcc-z59h0soUi_3(OlEBU))N0a&s9I&bx16 zW8}U1VNHv4IDUB!VKSp~SGE=RlgH#PDfMmBB=>02Ol1i^Jxs;3g-HP%l|(DVh2L?@ z7zPJA{rHq-9C&wtCSIiLr|;&K7$z&c>iXn&2Q^`rl;v^bQX&)XOa~|S0F9CAgBMUF zT>NgO;w`uOSoUY z<9Si6XLTt6^1@t(QM})^ay@qKpZeRhNWtQeo8?0??@Db1zmLpDGt}VcdMIZGtY2bv zYQ2}XQ;Kp~Lh3HQ^xj?Vc&$vxlW2l-i=CiWb&-JUzvTcsH)5EE@+0T4BX{?j$M$p|U8=gKog?PXF(n(+5%_a{ui%ABKJi@gQ zOdY%i*RJ&*5^ptEbaClMmm~dhB|I_KY^(8h&B7fPUPa%Wce)TG_&7_caOl*DGvX#y zx|~gY30wRPi>SXspbo3m0BQGRL9 zTJy>+<2PKchUn7omA8skCoCy=ssz66zAmAE;mLtF|wOzYe!g#nEvr4cM?WGHn*go zHQb3Df3$AfT-)EYM1NGi%Dh_f`i1m4YrnemGiqU1-pdp}(=&gAF4kw$0-j3hN#Cnas4 zQ{}EK_b%GC7I)0Z;nVJ4VK@VrNuUL_GYXsjr%zN#h6xF3=QBxK{&+V0sebSn!~JKv z%~%AQu+JZ?4OV%enN!m|9agqnn7zgdxm=BIH$m=LVx8`^>{_soS)pOfqUkIY?MG*x zn-O0%u~VA5hg-YbTf8oFbt#gnU97uig#mZ>)*8yHH6N*TAI{$!yhyQlpl5<@h{ACJ zFDi)&$xDfG1DD;_I3ID<(t>CgOLP|wS>4N{8I$=bRIKvg+z_vBVjBVBJagj}$-L;> zakk^OEK@gY<~HS$>0~Dnp8;np3D?**R=mnse`%l9B2cNC9Cr$9^~jRZvWwV_IE-?% zn=VcZr{wS3J@~|TW(IV2Lm57nlf%@t<(#5q(u=xw)8^x@Rl^+AhsDD z9{t!|&~-JBvw-$BZ?ETZy8~CcH3PY%++FHRow~DYOf`*9I_YYDDtn5h(A`YRtA0!TXc%Fa@YJ)8do~XfOwH~=5kGW$8hx1Ho}O$2Y!lnBaht(a$4n6~C4FXIF^bEti+?eYO{3=leA*o#Zu1J?=Z?{w2v^_R4zE4L9 z+Ck-YBI^~$(NPhnfkho;>I`}9G5mH`Z<*o@jzILUqu*n9~UZw zAla4dvg=oxehe+4i0W1@=-}1t@AaIlcR9Pg-&vcHz+}y4^4c~0k-5Kcyzjt);6N0c zjyqcLlu{e{RK)=HlUdcmQgRNw3lK#eOhGH(=N7kFVbL!i|3w~#LH#O0kAWU3k zqu9{dvCv#%dlQEP-C4EEj?IE{?O(c|Zb}oFJhz*_5T#E96u$Qz-?Av+YWMz*jUMrF z`e0{krzPxRdvoX9^60X{adT8LD+WWvNBqLA(80+!$+s7z_@w+KwHkgsvMhf!b9A_-EPhtp~hA`9$R32ka+0w&29z2P7;AyeBk!)9P)JNMF2k3!^ z=4W&PcTcK*rUDu%Qx;#Hc>=kM9hP%-rg3O58nsF3?t900)*Yyey#gnY?NVH{U9%a7 zy`N+}ER?t_T0VX>^ycs1&rrF$q>t0XS3Xh$?I%zt?MU5=QKy;jHD60Oe;ZmH5P22) z^K=UmdN?RK2%C4#u zDlsd^)8>diu`q|kxS1k$l2j_#X+qdOJh{iv5zo_qg}T0_?n8AiRuDnpdTgs^hDhSj zUeASeyqwrQtp+eJ*dAV8`8_>|gZUChGLk;&y58<=wZ)V9@A=^`+pV;2=yD-s9lpQ4 z{|h_&1Nmu%!sk;1k6AP2@7|xaiUXo-TzERKsC&1!xRWl6OW_kZT#VIbR17OUry}=d zk{^T3{jBbU?cl8%u<~DQ8uiTSPP=ScXRZE0GvN67QUp=yFNy)N2I}+X{0teOTcj*0 zw_8icbYrZ1(r+^dSiPInYkBWsjC`Js;a#4|!tQ(feE)t+7PWNQ_tP|O0!(u?X|xQ} z?M`7l>9E$64IW{x{BAnK{2k0WA;*7oj@X%iigog^VR`;H_L(u z^;?HPB3?Hk>mT}FgLI27;7TfWMG#k@xQ`u7q_*gOP`EZAGZD=GS=8y@|2%IUf5bt#hVgjCaT{tI zvq(%ruQn-O3u4Jbhg=odd1QYsMvL=lDTfyF&hG{chP$`eEY#`f-Q4>gbK{X+dhVV z9dgKfmu6us!Bm-{o~?~3qnUb2j44;DAWR0{ zu_fH>#E?gHrKVRhgwRQr8NGmsHqFbPUuReA-Gkq27CLKu_|b7{)xt70cdvc)^WQEv z44!h!5*$Rn1jrrWq1mHcYQJ_{eYFv}ZiWnObwxUY(X%PU0eGe~$bmTaC@$arZ^lAM zvM|(_&3pA5to5*yrbIiXw#KE6hb2=H9Qe$tn;zej2D=p(2CHggZMyyspcV=3j|;P4 z7rI24#p`ERY|jwN49#uNd>YpM!1?JK`aX{F|HW-dBmjo}zF%)U3~w7?L%hYpWvZ@B z2Q!wJsZB+mEuUwvtA#f6d-W=M_?}38XmR}MF;}2PJMz$iM7Ho{wd0d9By48d;McFG zxuJ9Ge>1+{qyhBb{z;$l6H5M{rc0Q2zrpAy!n0TZRx*EQi<_9RNBro_=E3kU+V?kB zohJ{2(=TesC;mS9-^>5^cK`b_|GQxRcd7jEclVzt@&C`LVvFj(`9WJc2rp}UH16SS z4_|&Y*{D_tyHy)rYTi#}_`Ro$+`%%7(Vc6j_Sm|^zwz~Z(syE9FsnKX^P+N5=wxh5 zF>7K4m#xU4*-PY~)Ns0lc(F_t@q;iKtI5jQ3t#!eQ!S4|p|DY`=IiuYO|>IlT=FMZ zV=9S65xobO04j-84bJhmj0I3${Gwi}P`4N=>3G3$y$-yhGp5%ra4>g_gxBGRVNU7= zUCPg>mCM@&d>RYawx9$&#xPj^`2n$~Xahb2ZHync7}x#8M0Py0bV=ZvWNqI+U!+6w z?*T_}^HFIkQN=uKfXUq)ch3$zZX@k$HPTOALfDlGB*fZIC%To6#>%j?(x?o*HGu_P z<2kiwxgFQtO<2P}uOb7HH-|Rm!P30cyE5FKyY<#Q&T^aw0+h=0M9Ep=;~BCoJ3Kza zKjS$~DB7HNf)98cPMe8(^@}p@-p3_M;ta>z&=$JX+&+d6)l8_zFNt!9EU&4!IWbO#LmummM)q8ZAqZfLY(gp{iGp^goytE!R{S zLpPSaWGQVHY!*V%Q{-T}{qzYK?FDAXb?ucnuN5c>qa8fha=qX=?nbyfpb$SbBo~Dt`FH;*yQ%!$8Sd~H# z6fN#jmJTmZaVR{Ph@J&qAu?HHKsjeMQCo;oLhhJqxk7%j2lhAnj#1b!GI{Wc*-R4S z#o@hj+#+RFO@eh=5a1XOio%5Euvcsqals!{Lu7wDvk8%TlUBruvx4aJvfnu1!plyUiboQX*F1k(wf(u;*ksqEVZg#E20kNQ&TLJ210C?mOZWj8 zRKc$3@p5}8R@l)*Vwcj}mADhLENQwc22QstL%0)A&uu23p|Z<}`b)tCIZA5yFFQ6C zPgs+F2MUnLy0U{9Jw6(0FSeORgNl9s@EC|5X!jOt1N8Fwb)TuYmpaN>s4zsV9S=A8 z6|P6%*lO=ZfcjU1(M|?69!w~6(#2WUXjw5d_Y=(2(&<$v$G~~ZH6EMg6^}gOdtoTp8DcM?(%W&VaPY()d;52 zAg|576x&`-RPGWv;x%U2%0(?F`Je9tmNXTIz0?HxjpcV)4@kB>jdybY zY%*$~M-93zwI9<8WR*l2)lIn+(Fq+!SL(hwXON8J4$%4Nq;uyQxss2{is9}h=-z|i z4LZ%}MSdxut_a4zj%@NXJVBwBxkd~iQ#(BW%Tcgh_BW{hstg;IJ1e}K`;*jRpg1zG zv|J{Df*Np3inDq?g{>zazK08#VmbItlmO$6P<6A0dTR(L5*DL8;4^~_lxse_l`U*q zMC}9cEk{ltmM_=^{>}K-ZT}#q{pJe7D0tz>XGJz5|fL5;`$wt?docO zE#NtfM|gR@n<%_LBQcjabXmtq#6u2=&Wt7CxgHXTi)5C`rpx2i>WF_mM>=E&8YQ@^;DfqVI_+PURa80`ITlR`e>v=$ zVYj(7y!ARX^aK3zM#3k;e?D!1#Z+49Q^l~YU{uL5469d-Z^sj+-8R*Jq-rf+uF?Y) z)0m|UvzV{IRP*EoWeK$LFuS){SPNOof0TY_eMlPSz9>n+Yn6g0>l)xNy7w9<;ho-_ zO_UzT?}=43+J3$90#cgdhlRn~(osDGMKDfRytd{ijzTGlH|pJTr)hxG)EHdg8peqE zUazVXcSDoQ>v<}MAyaJC2v6sufNiPV?!rLs>Gnmx;Z|SPTN@gki;zwQO}m_?jnKy9 z?u8O-e2~!Wujp53cHIA|AJ*;o_01Ef!bBNeoE;YuZPh?K21XUdIxqxIf z9458bY{+Aw&!Agt)_E(Fr={PU20CZ*y*bO&=mK=wJwGQ~3y^oxTE{`S9vyfx$1`Ax zJE3I<0i)D@m^+lS?}u5*I_*_~7AaVW+Wq*3JGKOJqpb>Y^ZIskS}2>8sl*^}NuPeG zCs{h@M$A*Q$o+zlJLoQPHe~w|<`NeTekEv)0G|S>;-x{)={mS}zwz@>@K9D6%#jPP z$m3mamqPP;^V>pCi4FC@xEhh0`-%iW2h%*%Y^lG>>DCrwS)wIYQRth)bsALdduDW+ zbttME)KC(yRxYzqS;jljQ8Dk*5rNC_i{dc_>wHU%Ub+kW>}N`Xa~*=;Rmx(oK=&+5 zJcTHVN0m00T^pr%^kA<4i%!UYSv9|~k+e#=7*oYPKUA`W;rw*7`TRs}RX8u~=B99f z8LDusSrd-8RE?;Vh6y3=mr20Er|c5^!gL=Cg-CyMKh<#q!MYAW5_X0j&dVrhXf1B0q!)f$iJ3AT^biaBUcAIID4oUZ* zywBPAG`ZdI2}^_v90GWJ(krLgh3F z2}E8yOkvTDSL&l&lV5}T?-F{33{MSQEcU5zR!K9K*I);)y^{A|wo?%CKS&0}W< z$MkCioha_@aA7d#oa)*$=tOpkRsbc+rP&B>3RgwS`5d3!gwSGj2SPoam2Z^JB9$9h zW!hrp)vecno-R#0=@b?i6B7pT7IRZhc9PYriYn^oF)h~81kp?5tPIO%b%Vi{JkWsl zc!379VP1_oGde?bMTC?kXG>ld>_C-0(iDiv9*mgu3+elfZXxCHX0v)Hm6-yhO%-UV zF%9-(XOt3tI8+lYlztI|u(JPXt8MQ<)G=zuYp-@z;jnUoB>2q?;pf$J6BF@o)U|)o zv&w@^Caag|xMW4sT4uy>JxK6Wc@BSpbRuvwXZl~5si@qcE(JW>ijI2r&E-C>27d{# zZ-SJ=y0qp@ERM+&+ObRxEN~)C?QijPiG5wYq*JqI>3xSWp%&Y}u{Ak`6@X4)R)1VW zlr`Wf+QJO1!#HY7gT(wYzprg9P)6KGG--OY-}d~iqin;dt%02oZ8WYvf0SR}(<4es zEGNMyZkOoKfC7UNRpzekvM+dX+Do4hHQb{h0+su<Fr(v|h7SWjgOV$J48`Wr@2q zzi^I}s#jRB#SpxNb>AqL(Q{^&Cxz4$JedI!KBvD{%T4vTuKEI0V7*U25!7!*SJO7K~aVb+{|8y9A1;1)OGBQh3MIxr4*)tJWD_lvU zqjQ=ccft5>R9xhS!wB4B4_hG-5W^Q0uD9qrf-o;Bb#Z`lfo-H>Fshv~eYqm&kQ=V9 z6w!-xVZf_n&wPkvw=Lz4Ur~!C^XfQX;OY{r#91S*k)$3sfI)B7$PwjN5S%!kAZE6l zY^YuO`Q7JVc4}EH5^vJq$!nIgT@in&$_*d4^I$1%Bma$R!G*{p5uo-EAeHAPd0bx7qv%t=EP==%@r!rccmFYlJf zdXJoc+__C8rW6-7d|?w7M|?D6YodC5A}^09d%`_w3G%dYVSXpOWjCRotYx|IN(nZ% z=5Ag%pFsP#7m4W<7#>C`WgrAVh}vPqK3tSr%<89HM%P<++eu-`tRW7WBJqj?7HV%; zRp8@cAN9A;fovBUo(X7Ucz<;f#O|F{gTP)c`%0u#T+M769@%*2{LlsVnb#!qNAPZ0 z#Z7f6knDpBlh>{`w?DDFp38L-C1G&v@i1NDCKf%qmi$7x{Oxp3f{`*Q8z_CeuBpf) zkE9<;5lPwSZeIeZVfI}uj_G-BllKTST%#aXC&JBJQ_xiQ1M4W}pz7poxW+i=5Hj+t zBg==p>L21}2GMaSM}-7aqY3k;I5xO;bri_t!lczV(%0&vEDt=MOWV#PF3WqasFw!E zF91~&=&6+Z^}EUkk8#;md_8?@wyeuXi(;)y%XQYMtX_05de%VIM>1XClS2`&B9GMH zcuVyWjNJrg8_@_G_c1_qiDZ2mG%U+GF-4c^Fd|^Ha}hcU?x-A7}*Ih3&#t3OZ|j!JNffd ztsk9HffhF~Sb5$|pmL#yV2$=fxGtzYEq?l{lr8J|F9r8bQN!+e>Yg7eVlWr^#1uv4 z&ixh-z|NSV)k?U>If?Hv*N}R9vflA*SEx?c`u_VfJbNaEQl78&N&n1c|L?g(q}y1Q zK{n7xN4TY~)6dXM2qs@5VGwsrj>z_8yH{#Cuaq!ROFuKA9twC5WX!hG5Dv5_@ z#XF9@{JSF(Q!wyy50~B4LS*7qC)@qjUvnSTU+=zk_u=*+kN2t=Y2?a#^Nk;RMGXg< zUtKs#e~OS96bJmfw(G#Ly`nhQl1O7HWRmEK}pwR;z79V)aKDLDv^~X73@8 z+F!C0<#nLr;Ft&7Wjn>f=NO$lWeD1(fLSXy8KL_EoM*_@`;_{p8c%E@#z80t=GoM{ zemK1%qp9co4DJRsrx~5X#Me<_`UWCxK4{sM8S4DrwXI#tRlKVV)anB1C@`TsUJM1^U9V|8s zRMDOPTS1c1{k9pVKRlk<0$^lylO_4R!2$}^DU%8Fd6mDOu91{I3@2H9PF@U{&^b`v zjzN6uHBgs?~ z4)Od$!`Z7})x7Yrk>BSS6>r?N5XdtMcP-p#lrj3NgXvSi+SKr7klC(85(tT=<}w&k zvvPK)Y=lUIyD8; zcAxm(B)Sw^8-qgoAM**bjhMhE+e6p)?wt{3BY4NVX$BE)uf?pRe&{m5tiv9NXS)3E zllFmT?Z%_H#a!3kWGVO12{b>^H2J^N3K%#S2veavJRRsFWCHu~eVNr(R?(S{lvZ@Z zU&H=qr)Bd=I*WgZuS;$-U zyf=oulR@G!Wj7tF&q)d^M2Ho4+~%t2eAXP^!N?R+warh>J<7yIklgW)b0 zd?#&XPChZ`u!mh34Ya!Wt3H$25n8CC(j7Gia_Dnnkxk$MC2Im4fV$NDS2_Ii5idHb zM{TG4)2MP^J+>q1Ak?Ag;mKgWy>WAUP19Rify!?m*Iqd>J(11@pQ=6csix9(XAPC0 zN!QLuFNC#5waZi#IOd-{dRTXeqIj&qiO|Gs!QpXKck_A-tLrefiVt;AMMgtB(5Bni z|DD?h9JWS9kqO*<^e>HhUi=m=Uz<UWmU3)U}bb3pX3#CFn6;N zJi$|6NF*hk52b?+bvxj>j-ZaDVsJCJ;xTWIlCQ_CE=Dwg6N z6)v%TZ)x1}1X{R#`$J|&1!tXT6J3b0fC;@3Bjy|2L&7hzN-J^=>nU?cR|hmOVtX`~Hv5J56kt!l)h7-m$U!qu^Ib~FVh1BO zxrzk$bZa@*CI4mMZT0)}hUn@n8G4!e9MlNnMKKmm7NnwWSbz#Sl`+5LRE&%eRD0Knj=F-bdtz(ob}c%SSxhVsn&TBPcA7 zrD4zDCtqy1(S(R5LOu#>gXvJ*LBkfMhCbywrHBNO=^6^8;^0mm443MAElw_Wt-_Y}V(n}pNIzwUi9`hgsY{cuh?eQbgDb5dsOS0qA>!Aj8To{pY8V8M^~I@MyaIX z^uy+dbVF~(pqIAc*gRMtGFsKqkAdSwjjrBa=L$YH;$hf9{qmXSiJ(rW5N_96S$l$@ zj-J2g5;mn@-y+>)l;X>$#}+5nrS-E2xCL=rH~Xxo4m=Zv%9yVbOM2$z>FJIYpT227 zE}cyD;~be=zQ8NqyW}WJ7DX^+r9B>)xLAD;@WvWG#+6UL4JqA=B+bBk{6dK}9&P9L zE(Z-B_F}lUNxTsl_WqEu|UWRVTW zvAXe(ni#`ICov#au8kpth#kxc20#B<8Y8A;nMAdlKo3P28Ab>EGT<{%pTxcUM zb9|`|u-PU?JPlmr`i5+Z=?mu0CJuZn#*;I6*bBc%viG@pN{zN#?G)|8S-%^p;rcT_ z{nJVt2AmWy34^=;a4`LIOPBo>Q=1gf(A0M?XFj=YpACK0#iVL*Z%t;~MID<9MQLnt zT4}SLj5s~%mWQVQBJtaEYH;f#{y=i_1YEUW`4!~w=*0&Xrc1LK;{0gutI$@AIw|6^ z0r?ZiYGRv)4a1so?19zLcW&pMg*{0OP4m-UMG&*#2F2f@@+;N}9o!=g_~YFY*o59@ zwA7JIV&V#N)O!K$lszXr zq!zpZ7@#isq!im)EBr|`K7G!{Az9IPjW#963G0I@!l~Xd6)BRI>4w6YolrGE=ImGm zb%B;gr+GTkW1~3;Ee%AlB|$>VJ7#g3fQ7tD^qf#JKF*E+PL^y`Ev`Tld8vgZJ5vf3 z=h(6LN(=k;EA}OXq7(QmPLCn&qgePytWuHSk1zLK5?SP0xEEZm{2LkEHxmFv3D0)w z`wP^l3V4@>UyeB$3@eQ;*liN#D&a!LT;{vFo{z zO@9`Oe>p^n-hv{-&WHKfgDb+#S2WwlhYCSjl@g%^|1vw9W2C5uYI+bS%CiqU*!W`m zgPf6n`Cww^M530Zi?c zE#kcgi$ux_IHhWOMI78z-hdC!DJlb03Yg*g(8`n7-1RDHu7c;s1!o;;5?6nekkC)P z^Fj94B~XG>j*w#-mv z|1DV3Fq}gCu+?S7Lc?I6oywcOK-RE96Y$`Rb(yS;q4@LH>95s{l=mIMwM%uL1i6&5 zsijs1Ck+4YDex$8&ndu?1tR%Ls?v(?c^}lzZpO4xC_|a<+sLIS^jxKYiX{%a?}2=F zYL!bvq%B8^NhZx05;wWWRwog!3`!WtXSIOu1O{cdKdB3Cj*1X>{dz$4z2f@$CIHn> z#AjvTm_HXKV!om}YG*O|19Ac~CVZCH4fsPJ`gK}r-u<2^$fTjJ@yI~va|N zr>cuVIH}sUc`#YIuZWN*nQ4CXGb8c9{SL-WbpwD7ef|)c`)=2$FKE|lKL;v!%;Q)Y z2=t!z)pT~9V9@$dT-3E}OPqkWEc*RpP{68OPE;3#{_U%{79ISo(k)*5?k{0s+_8$( zO`_mt;$oo9^G*ynVIX8zUZh*C2}^-d-~5BzsusNB9F`4nzEW42XLNFd$a=FL#n%jM zQQ$0RG74>{bl zjV6c2pG~S-V&X3APCQcPl3OCkMwps9+I*lEz_q{cLHp-K!R_lE++$D5H#MN?h@EyhAS7(vYKG9P39vWSeDyP+%Q34W8qSgQmzG9_ zvtuX|x=mL!<5>WuIM+{xUs;40$+dF+Nht8?mge7SKMV_-^!eJy9wBIh7`^%RCx4!qT6G`O($dO4DU19=k4lfjOXx#@&-LWqFG@z(9 z0^=B(aAd=KdfhB^A$IpnaV+Rta|mrKarNlQbd$9_UR<*W-HF)6L-dKia?E8qBQL;< zAWwDl`2-qSDF~O(qGO^UGLWK#)%us2= zM|6(U&_n^w24_GG;dO*^6%I)*l-o?F zxqMU(-(Q>tFtda++O(nnyVbmd^N)IlbNO8?6>0{%k3P~n#cKp){J)Bue-1CrETZze(F4W$s_q?styg<9HRlg8JW){`({ASn#Q(UhrZ^f&XI+e_ahr z0AInz%NIa-{omC7KSi56JnR`r{Ns2G|MPDDx!M4pH{k1t2%kwg{8{Mr(c0x`T=%pd ziGc4@QgmcU-+!uwe}3{rU+`;K`#uAQBG>btjDH9EPnq}*PAL2tjtkC;3{dv#3C;iM zu>@l&zKg8FbHUCc>lpe!-37A{_FA}pjKR)AvSa^ellW&8-;vLOm1T z)RpOUUO7(K97{KP>^m2zMR7jR0Wl1JJpfwX+d0b@tkfh;ZuBVE8vNMrn;Gy`-Ffi; zDhLtcptBrpb>(}4?&F|Y=%%f8_*$rszl{`BAfK#VrVD3U<1&jm$U{S=MVvLf{YV3U zmQp2D*07yd^2A$sYvh@B^>WR$`b+m@41r&MDcdHd&vh2>WZ|0Z{?2)czuV-~dG_Z= z%=8l-AKH_Zt}p1iA019AK5e~UJX36jE8207K3tTb#W;$E+;I(5S>aoZ)D!5BrFxM4 zH7)w+u*s)65CYEZF^L?8j3s$xKc0WpN*OZ;rgvT^-#-%+%38VlIZ?XZ5Z|C7%Ai|8 zEgFNHb8`CZ_8R23KU4s1w7F%{;_~|@FROQh=zrYxl#N{^L7TDC>5!z??R{i+zQ0`k zW?rynrP-d}8%wR`D9qU(*DL(1C2Jf4kKqQVbRibr6a9{SM%5HR z*I(9ckK4zHz}>wG5K(=s-(P*E$AsVOOV?E%>+()lT%l`vR;F{=?oRaL(CR!{n5?uZ8RYYnjWDt{0v1Nd=wk5R`k+Y}z zQomdbRVt<68K2iZm+Zmp&n7WjAYtcbsC`{HC6hY8V&^^b&UDn#V@-OyH1Kl>8f)WB z0~L)u?I#ZdsCoc~6|g&9`p1huBFTEjA7OyKO&ZuM9x1#vpB2A*I++-GppY<5vTEh_ zI`xOT)ndqQKwk^|fI0CiHWmW9nCCm41 z8M&pDdU*?y9K?pTBmUT~{$sLkFvwsRJIAe3gP9R!3Mvt#hV}|HG2g+k(cWofgQNK220ezhSd3*lyk>UwW*{48-=!BL|NJ0$ z{n#!xQjA{wHf4O_^4#d|pvSKI+k1e>*N)gcVdbOvq@dmIN~G_2;&=9xxof1$^9xPA zVn6Ao%FK6y6W_a-hGTJ&^Wi?atl`T|ffoyqyIg%GkFb;IY_8y5vrfglrtyZ~=zjXj zlFduC6jOK3Cq7xUz27i=)FU1)m3E#S3u&p=%Vji+St2%Fy_b}eZPuMC4T*S@#_*v| zwlH&{JL++zd-mv!C8cXmp~{LlPq$mIQoG}B>e9{?yJGl7qI#=5m0Vgjg-Ep6O=-7# zPw-fYJn7-x1XZ=e9T9@bV)IVJesQbWXgsej=dkL^fPmw*827^fi)N8Xb^1reXfc{F+-w9Dw11{O}x45dKzJ0Njz|T*(pB6=!T6Kvgf5 z))OdBxF-F^%irpg#mSs)$|V$Rq-t~e>BflD!7cS28EcIeLn_kVC%oIty0afuU;zYKgWP;2F3T#)v66`p1Y-YgqHwP(7#UtZW-~Fg zK@9n|=Xq#sugW{$&?aY&j4_4I{Dy z{%Y!7R>glFv!;1ioCk9N$FLV+%lTAD`2!xr^scEggR4u|AuIZGsX?1oeWlyO7ogdl zCqdp?b^OAcx#n`>+aCko1u*0Y(vxl=1;TT7-{W@Ta(qkblqJquoO;^9bZwMb1@C)f zAN(q{GYOkY)bMapow^G3BhvBaLm4045?xT`+n5bozy_w`Hsko z;o!z-v5bK}zYA?(UNA?(UH8ULai}CEXy6bax}7q;xO3VbQVZ zcu%h9y6^q$oasCov_+JXYGyeLq=i(7R(}XBQn0|wEv=)VVfyl7O$=gmiDKe zV}f&`7Iz5iqu&Y6HmzQdHp{7J*ebt7bL6S!MDfpR5fzJrhCHPAd_#8TGyP|snKt&# zcdn@n{px-n+g4t8uG%%;CyT_4oR5X@o5E1H{a#7z*_y5omPKZGzDGPz#$*gYo32xA zRq*JA@gi(Kh>THG0SF?a!3SZ z2`dU!y$%k&zhoQS&q@o2UsA0=nS5r>#G|l9PQ@LBio57aGJ7sYW#cE_aMB2_dCq(vUY;bJXk->?={G)bbR?rGzSyB$;FZm9&N_{@ar7PKk&F4b6k+;P(A>9 zpmkHLU?H5FW8OB2daeFr2l<}W1%plQU4`7c)h;ipxwDJ2UU**oPgvFrktGx`!kp%4 z*2p>GE@7D0n0LPJ*VLer%fzKHpTg(ABd$c(3y+H{mp46z=y3epqU}ibWHs+}h5Skk z<^sx^4i%}&{I96`3gOh~zDA?PZ_p^woqV$1y60hL$_z?tB7Vr6fUCfECfOk7vh#Lf z8N*)~DTzuBTsawUncZjAxe7&0uoEi}kKnXEarUJ$MpkuNvSaM=hJ(ouSiH|4?=UW+ z6{|l^7O3>S!cpE+CcstJ6i=1cY5ivCx0Ke<>*l4o)Lc_1lfqoCdK|t5zeQxu6ZpzL zFqdqGnleV4-AmAb3IcJK*?oJEtaFATi%gwV5Gxg$5a$Smi9*6IL993WOLw0Lb3<|zoq;?a!a;;7K}-sicjoA;g0v|~Gn9+Irw%6GvB zR(o3&)IAA-t`{T%YN#1>s<^d&K=Bx}NJqo@`h-EllAFYVjbors?{S1&HEeE!FCEcZ zO46B>u~bvBf5(aCpO(*^`x!@Ht9H`H$Sr|dROlq=UHzj*?iV5@8b6Uwt#Vx+WoS@J z;bGky#?$cO9%XXT+te`r(=!_Ag8%ib3LX1aTyOehH5JiP+vNH5!kO!bsGfevvG%%I%Eg}q**Cl{o>>apKkcJ(V&bcAvXMkDcMrZ1}5uUaoeA3Nr( zlKWku!1T_Hf#2=#6LaJU{oG0(JIw#5_`W%L$%EZTuvK}m+Z)oUjAd=P#&;Hx9Bu-O zng&j)IA(HJ}bNrDT9)kDn>ccz4Y@AhlMWE_vYHs~|6ag+Y)g=`S07X4wSWA6~D|2-gzDN}JgI*}9o4d!T<{}=_?azZN*F4lrQKhRH93x$G#S`{eL6nrRS$d#xRWw` zjtc@JPuol&HrW)7N*7Lkm4T;0`cIWKaf--YSeW6j%roaDhJ9+?mf>ZN9ua3J`~!RQ z;tWqzkk3u5>#q(FsA>`dQ;0VPFeGL`$tCd6mq0<$&-1r_%5qGZNSZlLy#M!{5V|l- zVo(~^mo!DFMP3Mrj#^NO(Bp29^ZWWy?Bg7(DF`dT4X`o9;(Hx}4wz({~zjr;Uxm7xBwO=qgMP{$lD;{+qD#KOtmR8MxJ}5?o$amhm3J=FU1_+#?wr|6G;9J7iOD=|?l692$@U%4L&wt~lwcPp4;a z6Se-j-iwGoogX|sX-4E!+aF= z6{%1M%VOY7wb@U3Y9$6l!KL&oo5jk%5HWB+mcE|ai+A}PWvBepISG+j7q5DI*4 zkbaGWDhyDv%WKPna2hilzu?isy1aij?>6l}>FrO1J)oAKn?O4_Mgu)k!24${+wSl{ zk3XxUbEcioj-`&*N7 z$f#}a8tAFWR4yY5mwRwq9{`{)@yn{!*%HD6nscB2WHmw{%3v>v% z7!q>u5!WY$fwr+f+QJMc2+P~NeXI^3{$Vz(3SY<~*U}bCt?qz5ur&7lhMOo*vmyd} z>oDwaTME4xKf&)@n&7K@zb04^1+2QazH-HVY6*Xv5xo>pX4u)7o)n>k6=l0I$Rl^E zsyrKxKY#7PTDt!w%dbr#Ikese!-E*^@3iT+0D54@9}^Kqz2N(MlZo{>VZhitbFnj2 zZ!;5AE@3F>qjjvir`=4+s>}>H8OMGmT>i}e<#e!sj1U_`NZvD?uiBeMM540OY_L%DSZK3k;I+SlLSpD##}Kbx+<=d1V=%1*uB? zSI=6Ger^7B>err#R2NdvxYGFPrh*?zZD@H!@nA!AkP~^J&NH>egMGeqWB+dqp_CKk zdK(=p5jCqp@rliO>I%ISIlI(ZMVnt}H)yY+Fyv2UZ-8VT`WZ%!--fvS*T@8XcWW2J z;xRBL=lOK35+EKw;Z%@dW~i74yb4mEthu)yqL}0rW6lwh12l12E7$Wi6dSe5IUtb9 zI2}ZQpx@dd1u+_Cegw(qAZumJf4>6k)AwMP-!eh82eiL+@S1nNFiu7AZP@)*ijzn& zo4n0H*t?N25BhwtNgimAhOh>o8bmFbFzmfU@+^?K(=_i9TGC67m`H^txL3${dMi5A z@89i^q;Gk^B00U>iF&zt#`hn&)kF$VX%W$Z{b^GpSs_(@FS%tbD4DXa;*r^lbCQbQ zJTW@-9Y1+Sdd-*|!>PJW@(^q$jt;US5$*aA0rN<)pb%LBIS@@;D~`zhSQY6=ZHL0Q zZA&7mI32%BWHV2?s6CpuY=`>+eHfh;DX2hzDqQTF?}nD>w1MDT1x+7i!`Dp z5*E)0K3~ZC*nTQ)Gi1Op|^+Ts@fizIH^4XJJ;Ct8%+=#LTyFn7SE_{C2S> zZkwS+$mS#&5V*}dyrAc}^HS&-{`aehy(a*PO$ggFst^2xxPF*6Urb$MKnC$XWfPoh z^?!%`4b1{DlmiVBmf+6D@GRcskVslSPUhx&zpQafp(ct;7M7P+kB=PUOQMn@2t*{ec^s;yKJSL1zrpU>|F_Fte>Wb`rdi%ca z6HZ}Edh4)d!sG5!<)rkaLH|NiHuZp}X4>9~4@+*B^A{e>`xE(%$?_%jWHb z4BXp_nPcrzY{_)qZoVP+3H8xZgt0q+>4PU=jZGxVY1dhO!lVo%(o0gyCW6tnP&e%B z;I}Xw$+adw{T7hBRu^p@Caf4W5YD~kr>5+SlBKiGuY}QR#1~M{NZ`^&We>+;`_>_0-!T_G9)*?MKWebo^J z%IKUHsvCz-e_CI*!!z7_Jras=@&RE|ETcYX`h@-ad2%W9HUB?HUERa-&Lz3zAQ7U4 z*)-INxSUBdCI}))`#Snx=O&N{*ny)pXO^_@5ZluSL#%#=^d(r`9Nvb+Z%Oz2o6>UW zbhv=1EPXsTrL_LWqfDkfG`wZ}3p3$dYHn!A9(BXbD@R7P3|;j3Tyh9r;$6)jz6PWM zNlueEbcAr7ymL?qpqXCo%*dnPjHWm$9AgQeT7?=jz>+*p1vuDk5q_P8c67iJB9G$g~2+8 zzkUS_|9%IpGX6VXtYEEb5@TYofx&PW#^?JJ9SvE}HBFTt6R0RI3&N3R&qPr@VPOA+ z*uhQ?uJfvx0+u{U_f=uM<}3e+0?8O3Y-bd@NJq~0!$`*hRIy%KORyjAqgeYF~m`5A7yO%*o@+g z5IF7R2yL=J-Nw^!bdNXdouuewn(B2!4&@%RN1R`f9t`9iz)VE9Zw`_#MU1^~g;9@H z+L3gj< zH41g1Ngrx0Ib__`lem4pB-VTU>sw@;zdr|5fj4Xa`0?9J@wQ*lhUwUJzwz!4>3Ek` zKl2gg*zM-1?4p5aqF#dNdf;8&`fLu>T9hlH@xuU!A-}4MqA#@VWVMT}D&zwL!u-TC z!E{kAA?+kH`C~o?A?8?w7ois0$KZ^T11&+@j+m6l8q@A#gp7=mbNPZ8vlm?ixViiI zoMT$xeJ4*p5zLWba@EjJocLKuEO(C;;gb-~#i!Byj_YIB1v5&4zG(+=*Dkjku^FGp zDKEqK1$n*r*Z*u<&5KWih^34Ma*v4J(CStyc=sz+_qjLL@5Usk35nyzQk41Xt)aA> z*pHJpw;4;tyns|F%hIH;jqaKCqpQ|#tv)YPznM1q>)P;P)S-m7AOmfqID3 z&?*Lq=*Rq&x)Wesh3h5DIvwjd_HMkwL3JKOz^89mZiGgaP~@6|=UmRvL#l`6UYAbfF zC!YM!BgcU<{JNTC>dxEh6Cr|gi?y#XxYIGd_frsO4~$H|x~9}U<}XbPxd8olu$nOz zB0%C!@}#RRv5?ID_#qWzV%PzFRFhviQA94$+j`M9W2w2d_gGVS5BKq&N)+lTIv2^% zTnGs12spfP#+k{9DHz@r=z>a!)TL)D!J1LbX%hDiGVqz2q2Wj;bE~vKzBu3*#E4rJ zo^7f=(@&`ylw$|(468wP7a!jz5(LtU1am+WVVQ9av zQm!T2KA)q8!D=-2hRJ2v-|iWIVh*@FWfn6BS8IwSh^FLjKNwZ4o_A4B@?<%upZ0#| z*W6k9vR!EhlY<%dj$@~K|2z6E(M~TKwCBV8<{MsxY-R>3*(_a?^DmCbzNaqMSNEug zF0fk9H#K1qbOS$cH{svA**p`X7M01u2_e{CLH?*mpoTk{$O380ceA3UKN6=snZK|t z<#Tn+_IAJd&{!0G5B^+Sz!B!T_(NmrK(~@cF5ak3R3ZXD?5Q;%%+WxILUE%KqL;j$ z6=o(Ki4$`C2#T(XaCeOT?N#3r_Otoi^Yt~~QU_~6+*U6hxl4i@SvUm zi&m}0QoHw3#($RSl;kB}`3(0~m4_&pr&|=ZFt+V9st=xs5hZuq;{SuOAY}#k4@a?N zU~%J~PpLT@$KU;eC8X{|FZdm2O*%dc6q(Px1E;0`4+!@!;~--4!bp5!eqkh@*GCNg z_~-R?9wPDvZ-S~4^xwkXql)(ykN#imL{Rt(d(rZu*FS{u1YppOXF#)P(M7OaZ@yBf zEIvmC+yvZAp8sDz&zS4w4@(ULeowTOf90zG&8Y;UBdEP-Bx{!Wjxb+%{wtjPZ>l92 z>&0klNiWHKwXXQT|KZ=;122eF^5v8{0{=_obK-y2^nd>tQkfUyJ2>E?dH^(no83)yk4yiKjEp^Q(9bAkCl8smT(nk{T zavpV_#-$M6FqmXLclhn+2Oww7in3 zUs0ESHEZs+bL@Kjqa4?f+dVCD=+3WS4tN~!8N9kh;_1GRq18P+bv5T9>CB%y5%Lc$ zcy~wkCptd7&)w*FGHAB~U-saN(OIY2zDsYqsE@R@+ha_?{k{hj271$GHZt#q#ochk z2l3N5j0?&Zc-Cie^%B%8)M+rEN7oHFpM1K!Z`xN{$lVdn!G9IlCu& z6Bo@-LJCK|5!Nb=?sbO8D~o$~Ax=3mocmlct~lkiWBYqmP|hwZv({`jZFF0H_a=jY z^XoUZ7j9CmRsKV>Hh}-cm6(}$$JzX_M#AdDAQ^=nn=O2s$)`P1nc+V*Tn7TH{E^Dq z<~8X49C^n{d#0JAoR76%+FzIqTURw4c70MJ8YJPZ8aOvRNUo0qqfpMg z)FZEEKDqrA3R=IOGS|7^MZ9~1A(>h;E#J@)FkWJn$xE!-Vp#euz1tHcxi#R;#H(2E zVRVlqjejYA$M%UYW7@1!9^Rb z8l{}rGH9)$)}bL^#uX#+J{s!EIx+CY`E3H~;N!-;8Wy*PGuZF=^$ecp__fIc?Wg=F z{M@(8Qfez|O|hS?Ew3GQ?!1b}z|%~)`(do>d%gG9!C2n6;AbWrUpooE-*q8af=wf) z2g{jr?z?>!UVKS^Qo>2x%I6G3}19bh?ME)wH)YD~~UR6Zu~ z%*F9Ut(#9JL*(QLe9FY2e2nnC`e%z=`aceO1@UhD6H(e@gjd@UM4C}N#ZuU9gH^$i zC3D0r-#3c?DzP?`s8UdM`dl2@Aqu)M!4#lUL%LKeQy9pwWiUgIh5h6^adOTLdqSv= zF`(~^;!C}13tc6McC&J=s#koR-HnUN18t|%OECSAKR_3JoMa~-PDkHEba<`emdrUk zS948%nS-(Ot58e4%eyoxxaPQ6T9)P5W9W)oJN`DWUV2ByQTxzrw8u>8$CxC|FCs<+n4Z?T$Os~k2 ze&zINTT}xw=_a!kQoa_~1bFE|LpGQyikJHu8yJ4;yk6oqSLHgE@F!}2VX9c8QtJIs z7C%oYB0&nXVTVizJW63EPvxW5MqiXPm)%VMJA8JPOFTB(`Rmmw=)v6n<^EKI$%;T* zz;oBKYHt{-a#q{?Q=C1xC0?(=Ubfb>zepS&RqZ5OuvF)4L!;W?FA{@`{%Em1_3jd4 zF=yo9%Mugfty^zVU_O{Qwb<;mzm(3=;Jhxz=YN=1X4%Ske=(Lsr%r7~GJ5}Td(qca ztR3w4Ow{w8U3q9PNhGaKoH#sJj>bu#=m+_HQu82uoeDTDiA~j9mqqVJMS~+Y)!=#a zeAWH*oC1gpJ14D5*V#8HQYqB_67Gw68e~_<=OXs zoS=M*hDQi;g%=o9(d3BF6)$7WC{p;uG=KHT`&Dh zngcjFNQE(?PAdV01#?e%YzHh87jst`yL`8ps(W!ghkX|}fB1`EUu8tPg#1|L|h~hdMv%K*jJIhg$+I7LA(q-NA{r`_erL+bqHPUD_f{BF>-0!41tYr$H0Y zcKx4%U>j4ln{l$e>1Y~G+hw@n>$X-F?dEPu)#s;s6WHe+jdVBlt-ac+C zJcnVc3FFi;K7r_P)qM4dq4#t)kiS?Ij$+>Q4||;~-}7hcr7?XWM1!&W^~gC7NE;`s z-7iEf52fd z+;#4LL>&1zjotm}s);40A;ZS}EY8jNUE*1wg<-DJzsoW|n^IG1NWZPD;|aO{x zs6gOXD1}#>{pHg#fejq1rv~ae@#!dJnpPKFk<@MfKJp;>8+o|TDL@9hFWzGq3i*BE zW=U7d5nAZRbWJUx1e>EjKFPXBWHR2$h2LM~wJ7(GZ>xuuIu?^9DG(A|pCrh3PyR^^ z&>_aHeS4l#B^9AwRE!W`F!88Ax4#h~UPp4lHW5@D&UXiCI&6DK?>Tn=?r}EnW26p{ zKTE&l&#q|DLfOR0JH^bc?3r>c)zZlybe~VxJh+7YA7r@7wXY=uGn=hN9l*RX7`N-a z@U~NB*ba+rGkYifSajASduT@0D~y$ozzwRIu85{W(h4vV*yby8 zJEPf(Zvq}?Y*QKa8SWIGHe>sqT+I3>ff@SI4$4&`6kUzluW!%xON?Q)CqsTSIi$)< z$#`fOvs81Op*aXU2m{Y&9}O4gUj4A&O=}+W0E6pag(97Gu4q)H64!+(8C+)?+}YlQ zA_G)fH*{Ia$R**P54k&d&_Z54@Qy1}iA=IVqrSuEImKI{M7n>BpSxF@;290N_N&3! z`Jgq4&Vu-2-FocoeG-qltnM*mn!&bXJ+1C6dEH9kPV3&8pwIb6xf$~*W)L@3qIz*1 zo!?Bm`!(-+Iy}A`mO_=`K1r##O=fISYe;7B)+4)X4(WLHNPEc~OKGX>dSTa)W)HZa zxpd*%7|DJa;V>S0K<>gwy?Wc1_)Al>$B;BanK_q&AL-54U)Wvqou(q%znpQ=C;hfA z)*4;%mHPvKtd{9|JGWJL*?IbD2JVE{3V>Oa=^13X2OzO7|{`iftPnS;* zqrW7?PK+n_!dzN_Az<$zlz$h1etu6;n01~g_UGWaMRG0LoM_NN@_syT zHKLqz!=h7;_Ku0)nc2xA5%$le^V1(+&zc3~6+V=_;BDJM%gzJb0->on{VR?N2TeYo z>FaxNw}fE8LPo;39;-z;XaA4N%7`#GrPiyXcbxEvy-+;PRh-wpGk;Y*D2X4p&=c|B zx5uU!lCP1%pzO$2s5?uf^vaYjW$FF4pr^;YQs)B&y$rO@9;U) zbn-OA47%JS;O2Ah!&Law@x4?oRoyYR-pCxTZxrya_ZM6Lz7DoSc#|8$801E1{$BAt%L%N(Z50?L>AO`Q*9PB=0?N47jD-9qR({?2 z*fxI^iLQk)MBWWX2&^FWw?u%6@_Yx2BQ~DYE;nsKaTemaLY611Oji?h@)347N3DZn zW{aAUKx8%_FgPJL)|9siq z_F>u5`BeMrmh!330@AU-eAl5gZ9#SBrl3PbS`J@Pm49dQ4!JDSbW$pU{{-CE*@w|k zgC>aNe)m1JJ_1Jd48+T z`xcrA3<$MdajFATT1TEdfFv6(F!uZH6WMS4_w)p-S(`bRhB|&*_*yl2hl)tQPKP~C#og*v?_}6OfzD(#NzTg!3%d9b;zkoC^WB1xx z#EeEpt`?K}M>9E`Zeo5@gqtxDY;LYWr$-XNUM^q+Jz&}NbNM>ow@qv&N?*TF34K=q z@g1z`P*(Bm(2 zB6okw6RJ0QK{xPU;LVTJkeG)@RI_eks9{c8ulek6BSn?v(vpwdC7g|**WT_2byIg8 ziRcLL{sDo2#TcbAfhzfjma~W{JUL0i)tqk431x*evW|Mphy<|GORS{c()I=2S zl{q@~;U=|$2-ltXrE0sSVrvy9wAF2A{O9X8C7K7b(`pZ44_)^7(7oAc+qp`4!7p?I zKzj!3=cgs^O(CZqn4uKGcE%h*yA;mhRDul}tqPq6hg~HkbaL2EpKGP25ZMl0p!gCm z_wX{X@%kKhX}{bw{~nH{KiQQs*8=`Ifh5O+-;et;R`glIZ!Utb4NTkcX(Y5sF}=@p zgCwJtOAOh{g3pNyr@T%$Q?qzLcwT6w@+x!qSRg=_*NTw~_ufaJ1~U4=XSGY@{ry6N zb_}Ey14@*UuqsVhEVEvK2m_4(quhs%8aygQPErjk74SbYqq^Lkf3oH8$S>$^tx$z0 zGv>N$pxk0Dt)8K1M&Dz$$p6OKbwD3d0oYB3DF)aiKl1jD%6B>QcXkmu!`^HWDWQL) ztYiI+DS<*+aX8-jRZ_07hRnw4Sqw{;k<2omm`Bb!z2~*wPB+{>)A<3jH|aoK0x`C_ zdObOJG%xiUwZqdx9%rsCUs?%PgmBqbjzoTy=GZcYWS3C97z)$(ZBogprP7 z!*y*&pqI~ZdjB^+%lskWb8j)VT=ROtjBj(7A89L= zlS;lXvd(bZ;R0h>KCS>%^VTPkN&TccbbFA&x6;qa)GuuY?Pr0fN-Lk0VsOoU-FLxK zE1nHA>O;$I9zovI%!O^7DSWEZWD3z?&E?dJX|>U28W_}T{MsxvQ{PNUV0Z35{aU0R zUFq_-XsADGd}h+=;+_F`U>tH|XgErf6OktJ&b_WAici`t{MWrL0`Mj_$5(!VZ${VM z`Kn=W+dVr?zxcpmaAf1YH*8RTIC_X#iy3dTf6L$DY%GAj-C`6OUXJ7qu7@+bA5XF1 z*kYEPcB#0##Tcpsy1ZoNF)meE0>l<@v*87B0fZlocZ*@ryLN-7hz$99;4E|8(G?{_+L!qG)g3V2z)DQqM>caXtt;B!bY+AR9;f8_4`(R3F>Il)zfTrdVbPSOzRYn#HJIQ>vX7(vhA+luEnG&M13d- zL#5M>A*?G?n$|~tz8v{=DCC(faG6QE99NaaKQ)BSKx=q+*(dY(c@=b!?<*1#Jq2Q++|pnH(doR$p(Ri~{@Yl4 z&#}y8)31#-IR^WueN$GPke@kK8X!HIk_f&A@VKM+P6d&q+g!{QS6BL@2SN_iJYfLW z211qcd{-6%qs;~J?nI38o*K$(vXTJt6^;lDW$<+`xl2v^RJ2eX2(-8a6*V(dWL&Vn zLZHM+VfDFN2oIX!Fw~CQH-;;ls~@3+R3C}h-EO)urm0H3H!f0a-`o>Z*ghFHSyJGr9^YrR%(nW$ru$BH^Ey^a z&><}PQs-ukL9`;4!E^%?2PSP#W_56#DbUM(sX`f~BNQXCd=Uaot zKpdQqaDg^qJXo>A>|k5o1Px15ng&A3Iu3?U*}MJoNIn$A_BPA+9^~7391vPUGT-sN z2&IND80$$K_lOG3yxuMld}58y_dU%QY)$ru90*&+^g^>dj8co2hqE9l?R90r!L=d^=;B$Sb+WyVL^b;iJm4lIy z5f+D~0(u;I+EOYX$hLIZ|LPFm0*bg&gbC#%M<5Cw*e~qR-Rx^H>qj}4OA6<{ziFDo zz=R7!B`Nw9oTmI;K=&#-*ArJFmw)?Bsc$b@h0<*fi&4V>J04N+ie#)M2b`1@g8wyS zhGC()IAFS;u)zs4^s9Z(3W2+P+P5}(Kr$1Q;49=M*O`7!1d>Ogbq?*=8i7tLmZ!W$ z)GGaB_0THoX?=}-d2A%EIK^DHfQN_p@2{nMJU2)vZGt(!BKjr1rrH}C;iy{z1`0Y` z?Ju-VlPF3C+(~k?Oz~0mTpHr~o&Utn_uoB7%$WJnumV?oj~RqPF0y$^y|)^Q*;%^Kkc7>Z!LhP_hA#pQ%)=I3RxNwgV0zsQ3t+g8Le& ze{Ps@c-N^{P;L@O^w<(1qMuB`W-&xw>&%|@vfzHOMi(*l?W%qNS zm)Rp3L;_+kzOUL$K|gQZ?5fD5$=%W>B=T5fJ z2jGUw&yh*J*!hNVndKVK>6t$c-Uj~$RoPPPw)qT%V!}uJ5D}G|Q7fg3w%Ll98Szv* z8zaNYYUi>i+gSK0aVs8(_H&OQekpKH{TArZ?Ch1ipD_vkOheB_bA4TQ&Ks5sC2{qp(g zh_?3q1%Oqf0J9W*qq7gtF?^l7nncY$pQ&l69dS3$%s{J%q3<~LOA+G^LT|C5z?pYo zs|(a6<udp(rclne`!jB%gZsuY@7GjGLeI;!DYe zmNwPP2M;zkTx+Uxet!RfMWH8IKdP(SyyzomW$h6~?ZK}^cH6eD)nt(5H2VDC!?0sH zpXoCeRi1mR^389hnGycCgI9UBF-Lh2+V7QQ3a^4bckY`TH6Z^9Q8MWM@`V)V8~ zoasvvxq`4uA;9+)@TSPAoql)*)%VbfdzhK0{M&-l{%9`b?G=CnuQZIoim7}w6zT|I z@eQb+e5ma#M6BsTJ$Pg3kOw>XJwScWAui^f&7k{4L>mP_CwH|U$n{oVUtEna0PUZ6 zBZT0=(InmK%?Nr$PL@V?G~+q;6wdnAM3XNu#yf~i>#wqop>$K)l#`~8>um#Tut z-pWANQko*%C8tjex)lI8I+bhMuOji>NPSjik~3YB^KoqJu{moc;fp>|Z&^hbYr&kM zb_E2su);aZDCu#Rx^DkO{KMp*-dP;^*ZY}^tT0voSkp=ACCYd_F?~_bZ67HhnN9Y2 z5)qigknmG~IapA;-+fbF*4Gq4_q}mfezP|Bx@@Is%{X4`Egr|Fbj!ICt>_q}iz{of z&G*lr!^t6OtUo`K1`rD~kF0Nh4ar$<_mrRVhHnq4_}DFD##y4rCx^yVQEf)MmwE|Ya+ZA7+a!YuVnQ-XlutTCG5Y1{ z!s?wjVWoT7hvrUnf%e}n3;P2GfKJEvYZ`L5ClU6`%~!NA*c(AhK*9mWD(b`=ChK@zLfwAZMmF;rmx z%~ys@19p>4XelN%`xh9o^vvBwV!HcxyB19c$J@q&PJ$GOc=CaIvjHV6r<=LdgZjFw zMkmNPxVlOA80puF`ps5;C58q2HwWwW#{|WwqC0ZayOzb2F~+Id+nHGY`}HZKT2&f) ztsk}32-oA_r&_=FipPsfS>hkxgqrWo*A4~CP} zn2Gg}{^)v$CmD`6VJ6Y(AM$ou5;h~`9g#qq<@>$o_`!soSW0qhs0OG{ExKT{C z-YdIE>Ai+k4Qr(z5H$(se;u=gudIRz6;dqzP&zKxq@d)q+Imc3FQg1aq}*9ITAz&I zI*aeqydd)rd;+{W(&m zuWI00NEM`MSm^5_*@a2cF|>pVwK&$vs%)E-C7mrzpNsmc(X0zk2Ax$xZ(L?a6D{F&;<_9H{#M3yVKo5)ovZiQw@t~ocvW#NzAkozcUBH z^G+v+$c)W84}J1W9XblK=6Zox}Z|^!Bf> zxBh9)=-<#$oQ$(Z39tN=39w;WHc0Yg5H7`W=KD-6sEzaW)XTv6se}>9gDpb8ou~ve z1Avo$^t_gW&G{pM;V}u(Yp>X`lX6%9m`o*+TC9Gv@O~*YdMEKpbxX&nZfBfc_V?C; zKCYe%w$#u17e;X%n3L!%rd!>0Ex&`x8rN7)t z3Zd`22oUm+PKv>%52te!Pq^oYD+QQ5`$Ry&ix8zgY1*VKUAoZmgI!KDHLl z$H?l~(sv8bVk)~TK!Q6M_J(@n=5`+&#vee64pw0IeDYPsX06(9AfV&Z0`c;3>$2v}(6*3+RWgN{}S=uE$p}Q6~UwH{4 zo1a5GHSv3YFyUoL+`PoVvFyuG3hs5b`K;JZGM(E1v0VFqGD91i7(VmPU>OFUhouXGA{@0HBie`)4}vW zAyd*|Xj&-lPgkX!zF3fo>mBLYc(|fPkO4!ovxcm{hU_i>7 zsnyi|9It+JxR=0=m#w*Ftci-A8()V|xA*fsgmaF|tq?$|*(82n$C3YtD?i`qmG-_I zy31$Walo*2p$>?~0CX)ND{T&W*gbE|t;NeFsBY)yYYL|L$ZKH0RH6Vv~T2=rlC z%ottJ$@V?;IciU}?@yR%Zn8l+CWmQIXNr0)is5i+&G(%9o*4Q)#uI{?Vm%7Rdyq`^ zNSi_vVvZK4z+86IMbatj;$gY<1#$zsv-E2VH5vFN-p60gbu9B&lnM_aYl(GsTW!dk z-pi6&=FP{Z8#^r=i@^iNZ{-CFMyj;gqrA=a#SY!e*kA&wizn zLhy2Uo8G#%_-+%GF3sv++w+29^;(IbZvb!qAHCG)2udIN`aY^9dw z_mozk*&`?e?dO-_SclocX;7KjqY#^PDC+-2yoQB~C=navEgMmSca=5F6J|8I=))*O z+mv^>AbnDa=;t<*RvePFATVu9NFjeFJc$v7#hggIC7}(ZvP`#Jt3DBu^E2mv> zXXxM(P>~;7e%4lhiK^P~l2qDA>}5a{kRTI<%k3-Cx{s?$(k@rX5RIe$*1SHlqxz1M zrGAS=veG|`I_eE_A~3X)*(^n+jInil-rqqh252ub<$3rNbv=CPNPCH;TD|-U4V&Ir zn%L@oh?mpT+_T*bLJ)K8*{LKl+bbQdSScxmIuPLyW&K#F^m_j*kf}MoKnbvU{1S#d ze(<`E3mv>j{RV*m81O z$q&8EQqCd|W#oAVT3nQI_ysDD613m?WH6F<3Hw@dPz57Ch^*Hek&D~&HnjS5l-`Ri zGB$fv%u6wQq&07Z)TDn-KgOQOHtx7J(VU@0rq6dIWDVB_xaZAFclApOE6<6a_?3IN z!!+lA#Y5jI!qq=1aLMHz(s2=3PnqiVVC;lBH&`C(p2gD-%!ge!xF2BYb$iA?tcjX? z&d`9FNxa0i9Gh*n-zwNCwZ~K?@9a6)y~|hg5(?l1gvY(&nTB30GCjh8Z8fWWlr7)k z%c6zD>}BF#()h62v9r-yK#PoQb0USDiiBw7dWewC1@;HBhw)@fB8djkyx$r;#^n3G zLgq8Pn`_96Ta*gN(F@M;9tdtegs9Y~!iWJ-xJoy<9MC1=2-DSm{=EPNs<(K2m|^-M z#Ydutc^?fKMO{fGX=u#kVgRtx5h3}e8|ym-+OQk#tJ6^q z-WQM`=z{uABuNsTw!Vd2nMBv-3%J)LohjgRD;2}Spjwf+x#Zxt2Sw)Bqz zfdC;`u;6aNCAfQVCpZLmcXzko5UjDrT^k9(-5R&x?(YB2{?0ky-sg_{c3kqV0a4oMGp>8@NQ~ff@a2jPl61>3S zgs<0k;AZoo7+wn`iN;86h}w`f*hn<064r#afv1!}=CZjzhEN8hKW?tf-I(8`4WYiF zcr^MQ;V+%biaTO?Z+p6~FsDjAZN$k;!Y^U0v_RbwVg@(fi$oKEEn+G?!Mr2(bJCb; z_EB?+&3OG9{M2^_m94i3m*p?Kv?B8Z5_N6@zB;6$!K_1-%X~6&Z|B+lB=Rias1BKR zIfr9FsU^NS<2yU|bxC=8G1Ry-LPs{^Y3*1+`eOXrC2v&=gasGIBhlsdp8{MYa$?mx zJ_BNZCnAWH6o`Uc>ury<8un`_HzY_>TO)s>1U{W_cJ?*$#HR!E35qTwzm|D2t@)yL z?FKHug=bdpv+j%OrjM3!qydpIKBa+=%2=K7)nd2V*Ozps`kU~VKC;y+{0!Fq(l?gL z2MKvGbR4WrvihwZJ3|2STkvN^(HFOcA9awI2sY1mTviS>yq4B5zETTWA)Q0y)ILtz z>DLLLiRk%e>K88vXabE}gmh_Z%~cg{`{YDDASd6?8w^n!hR+rtFV+4nNJdDX0K|@X zPl!Rp@TkC2`DVyoXIb=MG538J7QY-g2o6=4*-KI}tm>^QVk_0608zX|>HS8QV5Z zN(y&3^+~xIU5#$?*F;+W%QbH*P2Wf3wUh9EBD0)2Zw(*PvG+u3k zth=<{YS~kgbV@bND5W)tzIi{KYH5TDTaEU$`O*%zNR!nJb3pT04*m0pq)81KE0GL?BR~OhwQGHV-JeMtBJH8oHB8y6+ zRdv(#9mlfcz-PCQr$T>%BfxbLT!Gb6!ahw&vFzJn1`@09G~foEPeb%6Jm*bh2T{Qd zFc)(mvWbbfCHq0(Lr|JQIw?JU{6aT9zW72%x!UKx>F&!=zRdG#z7@=-a)ZpjkI z#X+e==^&H~oA_(btgxZIlZP%AQdHtii#J;M8O9C78J9#D8j6tIt(aY92qyoQuk#kBiEC#*!FUe>CXM#G#Gk$83@TJ?3)68@o^8WxziT^=VBXY6! z>wFwt7SkJ?UhFmS5BYN8ys$Uft_@zt$rO*^L0FdJiP1Aon=NyscOYJAaY)CG-j{>G zuvIp6tYuvvnc%6cd$yb442QDk%7k%(rU{!&V3+?YjS)a|Q9uZHy~*(<+frNWkSiEz zF%;xIi7?_iAlGYiPvVzEiA3k;@$mARwn#{QzNyfTE%i%q^rk8Lg7zg%Bs5Rz7ySp? zkg+vi3DoS4d$P^-pw>93a*2&Tw8_VIRw%a$vhX@Ln}_1Ni^VY7S8dS0>0 z^0=+L^}TsK8qar`J@vWqz0vpZUUEI&3Slu4k#p}J$z&Nw=OnMML(sTNwx}4TX^H(Y zrdh+_jPJ#+pGRJ6mI<=O%fRh%8r`z68m-$L9)+CCyvtMj^dfhlCWnRW#q*(aXxY)H zp2t@Esvj=vvz{OGz~T?;sJU%|YbCr}f?l>M-6# za>3r2%KR)&T9&TZtsFf{aaPWqA(2aR>w?=w;$uGFwW|CkGj>bTZ56tOIdv0;bbXp! z&|GfQ%>n&M@oc%3o!6{(WL?V3$7@ipiUW3pk7tWmFLFKP1?5=?X<5=J;|hR@?`)KrTRblU7TmejS;!$^qk`G^P5ukb&&$syDcVAcI|Pn`LM zSD^DC4}w5)mWt?(G3RsF{r3J=#_6@z^{f}+&oB{4(6k{V+LTjt6QUve>x=)q^{7Jb zVUGbOM2q~_fB*dx3l<5Gcllor@jtiupPz(e;Sdf`IR8WT-xom0s6fbc|9_7RfS!ty zO6t`LU#diz%+9Y)9=l=*-9!#W^v}HgHFfbz!>rO=0$bmFFgf1>Q`|e;ncVD= zo-!ri2x?=Qj2a2b`n~7c1Y>GDJkPEf&t?1c`+l(eJ8%EUBZTdQqL8Tq(D$(d=cHs( z?854s81T6~653duT#_obnEy^x=;td8tV?kmWJ;uxdL2zj zjn4HwG6nzdIEA1B?$9Are8eGCyuVTaAFEZ&KS0FfKQoD$4w1#Yt3Xc?kw6{S`|YXy zA-Y1X2214{Wy*V(N7uoTkt8P5u_Oh-`<@cbYWMxZRO#Krs?>+;Lz$b|3RbUKdR$)9 zXy^9zx7_zhDqF=NNG6Nm5;!_S`p>cosbjjWQuz`wTRrvcnzxtZ7m%u`VWe?ErpFt? zdygZ~Nr(27ETQfT^D91wGw^7&eJLgCK_LhaYwOnoH4e|Q84~BHCE3E#0U2ad;n2>Pj;~BIYrCMeB1{xJ+XhRf>f{KQqPGgBrjF_{jy>yzby3IGUc*MTQW!dq2UBnM)hKFY z1Nr+WP*aAGrqvf+o~JJXJX1Tr_k1i{dKAs|>r9G`ZAXv^i|Mp(?a3eDPzwGdntuuD zo#G$O7l{Lg6uL8}%xr*T9NLyH2($R8@3Qzjaj`dXiw&|hj_3rHq ztEz@=4Sf&s?2oJz^-SKBDZ>0uUin$q{N7?db}zmy?h~(DyGL0!s>SM`sGUL^Q(=v& zZ4c!wxD7n-G=gV6B>2U;-u-=6l7#+DN{ODL8wU=}P20WczMz5simTmP2kZ7`-0{PL zSq=lS_f>*!9Q&g0p-t1^Gpd03ElBveAp&Fj35l`#@#^Nr!)bTX zq1*pO2+bm*I9I?`BIUiWnM1&E+Ei5xd!_Cd*OReSPam@JH$sX`LK4t_*I3eNkY&C< zah6+|cei+0iIKHjAu*bv+~MuvR5Kvi$Q0KUd==ttbdZj?);!fq8DS&)IxcqYq>nkP;kyx&(%g6^& zBbO(5zw&kQez>G;?e0o?xz`Z8@d-Z%zT^x)*mPopj4Hy|+Bp~$trV2>(xK3hF_)?3b$$sEpB*o+oudn@xtg8{)j4?N@65EQj z{Q4Z}H+&9zU4$y1$iVxqLn0Qiedn_V zYX}`c6jMsgX8+QrAV=cRirY9p+(EY4*k{8j3eYI>!L-1u&egpmA*BLm;uPVj&2fIV zkGee1{?Ergm#t@cw#&BA*A2aIxZtv4%3(Lr#U&ZMr;~5Ey!>U&OmUZg88-iUa25>6 zHU-85`=tr4bx6o{JLbPdJ~}>GHRO4GSSI$XKm9sqvo5TAJIZz{z@*z+4{3cVnZap6 z268*SDILm8q?VaB9kpISK8SmdN3qiC*7UgQ{_KK#H9(%{c@ilwT)7)p-!ol)+V6Gf zl^(2IdlT~Jw94-?GiUn+5s6Hx8u{<51ub0W&(gKQgMe>XJ(PadbvAxFhm_e-Q%hQc zfuwfnOAGDjRx89r;D)CwwsEQAvdSs7N4y5#9T)4vxr)Tsw8?9_5zu6NFYE_q3`-lQU?bn^N-8V^h}=hkk7UHwXYU# zJ9&V&taH8faxIO`Alc>$Hlr^n7ISI3Iu+5OMcn=Plt zI~$`XrbB-l7Ky)*4gwlD%XTWaa#)VvQ>rtJIHjkj2S&1dU?i!3#O6RR9@URO(=GSy zL#m$7jJ#CwA&*Fh#Wa=2?^UnuWJC<>vur`T?B)4}G7ZWr&6N?F*IExIuL`XOk)<{) zeg$>)ls(W=C(EgBTzxb7fsIzf_tDHKf%=!aV+&TGjAsEA<{}5D6-eh9Jm>mYVRJZ? zuZseEO@%6(e6%bY_jV6j;o6*@v$52r=N5SA@L+krG}3bN^oXlm;;lKkwB8<)d-CNh z;_tjZ|4TKDA|14H)6#y?f=q5GGXBsfHtk0ZeP54xv+k_v;7HHRr<>!YV+sdXij}q< zxzyW{ieuEsHSIr_076gkA0^#%mV0va zFx{JJ*CI}Iu(p;hDY;E8_v5a3d=T+(Cg>jnMmpus1>*pO10JiVR5r7rG#veU^799* z2c9Ow?y#k$)oWZgAB~3&pT{3|#eaDY|B)XOG-rs6Uoz#=1bP;=$gOH$wK(cZ?~BgB zr$$4+F}~2Y^MC|x|7j+nAt0iGMKR&kBgue%tS+VCN?qQoN*DgRw>L*e*85I#x&Vy9 zn*Wv2|M`UW1+s+$F~t>c<R~)Di;?Q#>W|-S55yf6u8R&*rT*VxhFp|ATHHE z?y)(25PXMd(Y=UJrezh)WclaL~+ zdB4-be~t46lLYu!r*Dq+PqIQn5VFw6?u_{VP-#Lxb08Yu?*^$t4z}IiKSpSm?(0&juJTEZSzxyXyl3W#N+|C#@X3;(ZYJ^D$8 zu5!z|rQRMRPB&#gqYEfsy(VCMppyMct+h{u2OZ-tAw-^wK7n8k%MLR}rkLxh5Shq| zq|0BMj8c_-WX-uE|F55Y9bjK3#8#dVIc-*>FLuZ6G`Jm}V0r9+`|ElL(d|vtkoSh; zCdv~C%FAFgp_mU(AKr_jBjC~_K$@mSzuX0xZzp&;zl>S=fu_R^gQk~I_4hC5?24RB zWzhmGccUcNI-cVm=$-O!b2>5_k@iBAbVVknIdk^>vi{a^%hSUOujp}&(y1p*^8*?;pr6o&oh4MA04`TP@MNCJOv4KQ49a|cmcT3 za$rKf_WLMo<;8l7V@qneG$}T-k!rfz;XwQKUrN7%5%=*sBlNlaRwYG=`5e z6kNA`HPI+_5F!Z}x!NDEVon~QL|MYxvN^(HP%}Bj7{`czY_uWv^V9pM}*u zkT)szq#^E2hc&U6C{g*PDJkUrn?G=W@uy^iGE${4x)Q*lb!D#FEQRiHLM+xUx74WG zY50ake?hr$e=Lg^MSZ{dD~3z|{9Xoen7V^0x~k+hfR zvM5|c^MfSj?u#&Z_w%?I_jmE4rndd{MW5oPnv1GaP!moOuRBse7sIaNgE9BsbAOX+ zgO#b>^|jn4?EZyfZ)IH%T9~>#Ac(I2(UfaNSyoBsVpw^gkEJ-wLE zL_8@Z7ymtv;}(Kk4$o)=2rS1A(;-RX9G=VGCV|H?@q@o<@9r9>gBWZaEVtsQys?+k zjLWpY${kjemd)Q0LYB&mjG;xk=`m!DjE^$^?!u$w<$n;rLi@s`EBR{JP_ncWpqLq)N zKkB=Pq53=~n*(Xp_n0|NZV6eXkVPw$D=viLLQSM=Kye_yoMH<=M@T~0lEDfww7>ec+BRMSXiT?OKvM5Ua@^-Zm8=fQP;b&L@O$dNDNNK zcAv{oM!hyEx)g@uIzwuBxQ{MmwT*^Raf-`Y8N&rjI8K03Dd#}O8< zfLxW5OVw!ox?nKr)ahGY4zU^1IOA?k7OXgQbLr{6bKq?&5GE`4x}qNny6s{ebKR!h zH1mIM&-spPr06*7x$5gXj4dSC7)3RTfJ#ua2i<<|b_Lu;` zBIZjdJrbx?o?GBJ- z=5aLY$oR8Xqw}~pVtxpExB5q)`F(#E2>?;d^L~IGBZrT~L~Z_D&NS?e)$7F!k+y6K znJd?)9PSkN${MoJ4_$kVt6p-{b{z#XPkb@s6q>SpooTa6c72N*xxz2Gl5H*3(Ql4R zV4U1%9!Lltt%(Vf^y|aMeI6=#kNY$pGqbwsL7)6i&z@>lmyUvbhMpqGpfv`R&9iaedK?vlex%Bj`Krl1cl#@fZv3BLX(`P-L;9 zca+0S_+Fdb+m1uL$G*1vzQt4)x_FHFDVRixOiz2Gw+Dm_&+pwjL59Nrr68Zu-W`{iCmf--fYYj62j zV}myexr~@HVzZ#=2X3U|RI>$*DcJq$X$GU!_ZH?aypj%Ya~_+@D{)$-W!0;z`!|cu z_O#+C#4#79pTt|(FpJ|!MG_yMhwF_mF(ijRz4jX$Yz`+HlgnRx#s;zE>Lpx~(1=v&XtZ zRcoFdQ9z$9kJi8$pj0>XhU4-4tn+o+T<3Icj=;Y((a+N$|F{UxO)5E{X4DR>h$R)s z^`zj&#>OpNSl~6CEsRVo++c3okATZ&>}Y}A_lPUAmApSr>Fjrx&5->$q|v5QtiOda z5x=KcZxm*7YQ1Z>XXJ1uGz1Q$7}9b>ISHs#;c{WTm{h{#Z*E0@VF zYR#O6+-$xsg4czQT*}p|&=AAtCYK|etrh2Sxm|dUL9JD_J$M^9c)yiyVBNARW1HIZ zRooRw?o|>b*8oVBjlEXujPa-k5xvl(xb508LK!? zOwft?`B(ZL5!kHh%!%r~7%KQLW>g5CYEDxQtFU(lD*RRArs($XUm6eP1*$ELW+d?C z`3qbxk2rgT-U+)C402GJ+3ftN0V&j<>Irbqj1#X_9>yV1;V^hhEv_+Dr6C1#D){Yk z2B`uB>}MzsbV);2GEUhB={UBae4Z{wi)^L4->Y)PJiF;|{9-E+SpQfO{3T1F(aBlI zb&v5{$8%Ckm(5M*K%2I(xv%bs`SnM`SUQIFJ2~6neK!wzjSU_)J&65qF0B*NS%vF@RAX4!x@sX3Za z>zAGR8n%ZG8j$WBaPY@XRvXi&ygM&VF4*hYh6I=aqG1*7B6V&nwI#}PkK?v(rRluc zEA8LNi#O89o%dJqGdnuk5wO`mey*B|i`)ht*#q-l>xSOS}(j8As1`~PyiPFLB^CqkxH3^z!*duJJ>pf51>bANOny#2LUhDXH{8%|}cyGaa2gG-~v zE+#-ipSlb?e`$ZjB>e{au6xl%YH)*cughl`wT0pU5GW|%eJ4aM{{!t%HjxUsIKEa) z;bfwc|9H7Zl%tN<6Vg)IxAA0NUO4D2)+V3FQ!oSEST(j_TQynyUkDP)p>YJlO8f)1 zPwwaCneS|Ee@H}f;uUz`KZRtlTT(DpNTQu|iH2!asT4?&o{ZB0PNvNQzkqiG4~rFY zrjmzKX?+7>VP%j8cE@vQC1NL zzdb$xsA~peW3B~UTFW^cC-f>qjZ@HCjgiii41$e{uhW0hw?j*2q{0B=!XXD0VU?cW zCBapOHv2o%amFgK7ukW9yEWeMTJ{;WHfC9zHj>WwS?_Q|w)+|+?P%fr+^Ribp;<;& z+^Rl5v_U$Ty9IY9B7otMt1-P5(D#r{=KY5jt(wZo*1Xp$g3cl!rG^~iFBS)u$G%DA zPx`H|5B~<|Xba>6zgc48 zl#Di57J3w7MYYF^>%Y`S)(Dl3>+?!C5$WV}O=2jQ23KN!GX9uRTP|ob|5~-;{T&!o z{q~+50S+k=98tAD)_o|Fk5a+?f<4r5>y0h<>87Ce-coy)*VV9zWUd6mtSGqVd(_2l zRgU6{fXBVv$n?SXDF+gb+y?#C`X+Cy=Wbito0w_)PInfDa}+d+N-fU2K<$SR7H7R7-O9bC@kQ9K>TR9Gs`RMa?W9B5Ed3 zjRJn-b7CvPTkzaNg&^83KoO~Aa&9Mi)z(ks{LAS*1Cjr>0ia+UGAuPA%JGa;^ST`w zOFHJ+#Nh}MUGL8~)j_4Zvb4iHG~=%_|6k$2diD0X`8Z8&Ba zHHzrv<$8I=eEP~YlPImQS;hkIFD<~~39~FlJ>jJFPt|C5J+?5AXc{`z`RrRF>KCl* zmEv*O;iPf6U1kS62y~Nt$jFl!w#nGHu3X8clX{1sZI40EQzD~alMSWe^Gg;QJo1_2K=8Kpzj%8ZlQ&@6vLnlE;S#K0~$Xp zGSk+OhkU>jZ0q?pR!fe$RDgc?i+czkOO_-9AF)sxypq$FUwZ^%xKz|InEq|(SBUB1a%znxD5 zQuH2A8AgZ+y*q&@a18R?Mc-P#nZ8wZudbkKAku!%w>^q(-V}2>z4B@t1;c?9=B(u| z|C@&KJ@IP90}8RXc@*g?%c-Q7i<8BfU#bNo{B`0~Mg{vBYHiACVSZSV9_2wkr%ry! zlC7fLD$U;T8qxs7$TPosuu_d3t(2UVr5j>(Omeo?5%PZU!O2QSHH+ZsNR@gMZhm+7 zSjKYBm1U6nfp*^b>-^LO=MGlHbrtY*#;G?CI$0%R`?&Ke8c$Zx@R`VDvti6C;fwce zv^tptU^TKrtFamjmE!A!pgCuvdfJJovh%Vjp$g{RhA1U~+3u99wKPTouLq>Lz3P1Q zi-^a0R*wy$@pOKb&vfr~X4P#|h9F|ae!?tQK;o1~Gnpjo1!(#-Uh)c|dEW2fHsI=I zXSZK0bCu{L773;G=wwMfS9Nj$X_b@K|y=BGqyIYO$e|3}ANB+B=Q6(>E|}4L zJ&V6OU$M$q?z!-?n3Yep_#fZ%=V_FGQ^dpXJW-(P{uE4&9}Xj6y*rdUWOc_zo7VGc z4^UBhosxyFMi~5YD%Td0`*u;ll^Se6yu$!)a57VJ-MFF^K7c?j$sKDop_@o55K!M~ zy|OuB%Y78oODYi~JnZpQySF>Wlm3ZkAeHw7w|DQPJz8XaNUs$4k%jDd*=Ukg`0>?j z!O;=nP^q^{rg*IAW%ETG?DHUN&vwxwq@B&FVe5H21~3%MDl4OVW^+T47a#Kw8@i1N zHj44gX-i49HS1s4_KoAvxu&2QyHQyx$vCcj%`R4xWJtlQmD8m%<4-RTrm}94$H45= zO>TD9v5%e2b|(QvY+kr7(D*!^ZScvA>t03rsF4~S7UU}*t)b8g9x&^+J!<_JM%{WR z2!ZC#n_({^R*87fFV|J^$)0?D3KtQvI+9{z++`+GbDTAQ_!8!OzjvD-(fT0k$pDg) zL0$dKIJe#)4K_RN5Es?ZZ?vGxK^&l#0@lI2+Q!=teA81P)=N!y4+EAd9d|ZyfBP|P zqiQJpP(2wmurI+qXcdBun~7z?qfH;73eYnfLgaDY#x*fsyD79`z?(587(jtOtTwFc zkdbFG7N(+`crW@N!S~dRJrFESG3kbKfIAzf!FSK9c7;k%n6UuSMqD!iDh0-Md~PQ& zR|iAS#)@e zPmgw`pQ{2o9(#E3xT_LVS6ab@qrUrvVwsKPpQ`;@j@QsehEq`lyIxP>3ccc1O7?$m z=*3dg8MvRglxpGYc4{L={bfWQnUuSiSGBsgF8hmWNoA(%-_c&09I>uX=M=y)${mK!p6Eg-Az^WZg=nNA6Or4) z78CvffGlY+o0GhAK4PPExHgBCJUj{k+H*AV*asIi8PrjJ*{;{Kv-MQdoAqBI`Nl^? zP?}@VS8q}4%hj?}bm!tm^8Xla4MV#Zcjrc*)SJUwz1KslU*oq!93inOjub2o`XZlgbbamzz zwxbxyH$J-4N)q-JwJ!zm;d+a(aq!#W`ERJGw->CL@Z`#^O3c27C>db}n&7Yrtc)!wuJEfAjn5ej&TqO`Wk#@V~cO;Wm}h3S5t_i&b}DW6-` zikpmY^?7pD{a_xZ_P(? zE{cMm9^?DL1b67_Eb)RK(}#hE(@5J86|ub&p5E|wHqVw1sE+$dNz%S8fM8Ap%LSw2 zAvoV!&AtCULprXsVl>Bl?eUrRn*pDalx#Swju+!@a@n|lifk=bN}OcZ09o<1lJ zglItQC3!@vLJs0AT@F&18KAk%tHgkD1vly`ZQYK(F&*?QY*zt6JgYP4gMt6{1#46^q# zj+-s5>PCc>e(Xwisx;6pv_=bic-^L_D)Ub(no1C;jbPHRX`e((i;IR9zD1F3O29id zDs1~ZvM#nQD)9I3NLz6zaA4e9qp!Dju}AgBYw{*_S>x|4q1C0q0Df(WUaxbuN(}5| z4N(+Qg?xyV`C_03KuPttLS1|Joz7>4l2)<}=1xnL!lS=Mq4RXFEV52a_k(pqmBwzx zZgx!sG|AGC1DgKN8GLoj+RnN)xBJ&%ayIW7PeU^8-2vdkC#5hr1bSiBuD(S~6jwx+ zC2!>=9xs%-8?}7;U=-ht=VDHm#S)0z!Gth@YoK$? zNJ55y)Rh`&W@lIYX%2`))mH2aQH7+bSPOhSSR88?66Q)7<>gq)nI%ijn?00~1Go1{ z&iy400s3&zb{H-tA>u>TFdmoOA#d1MNaoOt;<>q@l-n4zo~oL~q*?DeL@7vB$qQuw zl^;B-!dvs@LcSMDPsVqKMSARvrHdL##-Z=_L5w9&NP;0y=l%llxUW*Y*B6u7muFph zd%PmE)U;qF@Einu+)4jUwdExI(4_U*a()?y@##BIwCMwr2p5RE?UVccI!61`-C!Bj zTE)^FCzE&_nlkL`(6Ujgg%@t{sCg)31QJYG`n8%<0Qur&dDh7{?|YFr-zcu$3=NpX z)f!p#LhT}ogIK9BazHGU5go5F#?Dk4DxOO4=zh6D=b)c3r~#|@0!Y0z9jv5;LnAZ@K8eji=Pv-aMntP-3c~eiS5-KVa>*!RwMIFd z#h?UJ_1D%27-~TZCBMrPtmhf>B{#1MT&IBKJz=q*Ey$1br_ixH0Z&Zx%<^Bag%1Ub z*NEQX^nE)IGH^1hA}Ep^KXnL=9RC)6(5n@`*;S`)F;G5R)Gd7xlk21gTC_VT%c64D zl#_yo*KD+D)iUu!N%Rtn<&=)v@24^Th|>{g$KKc|&TDJExu=EUA~~?<_*Xpf%!(A^ zS}{In5L%QFb~!zPzo7e%DgADQv;{&Z%Mmqwy^Q-Tmq`)aL3+UK5w;IfvYe@uBjnZQ zfPH&IEJUYK&dh;62hlKMza+)H!!__cCx1qvzLFfItwLNNpKYgeRKQDJ;9!Myj$E2I zzTAkzt1@F;W7;$EM) z`3eya^%A%hMN6gyXf1vHvyJhc#KK^7Z4s=hWsBTN2_hGSDWzmW3%g%cv4z=>NkENF zovk-zU-b&ioD3TC2y*4H3eI@hMmEMaHNMqq^dF0mp z?TxsYe<(fJ`!{P5p>Lz3Kci@4-(e};p4_f9b6j_<>!S*Kv8Df2M$%iM!}E{x{-OeO5SZg+-L9J`ILIJo_iGxW36#*rE`d%Y9IcOZGH zdrbD)_AV;^?C*15#Gi$Zd1fsC0;&c*U zIV7GUfo@fT*^qK@s=lgaN^+kkG45S{r3l#7jRI!{Qxac>NUOfxLtXg$CG>ZZbs9yiHi@~?<8UVwiL z#9R1FGk+{lhC_L9JZ@ESYmOUj>kdVtQ;yjlvVHBYDDpm>siUsY2gyg%A?DeI^Su3} zRR59R`)IBUW8pvE=X_$WftD>N}?NeU;n!M%(G)A202(%C9)g?7&? zW~-Z(+F6@L#UKe}ao$sdaun|~$PrYmN7Yo_{Z+aF(Y=nZ34qZj#i7#_?`twU-lc&I zq|}*YnPj!pnJy<9Z>uTIvb1QFH5V5_L5riQe^T?DR%vZ?apNnxXaf1`0ucdoRkoz6 zQzz8{i%~BiCX;hvnJf@>?8iFpjAlhJ>fRtJTu7Y2&}eqlq8|S(tx|vJI}UY{(y{;o zd?gT$yVys!P#`|1%NEyx(z7kDN?yrv^sc1=C<`Y$oNuF#qg1oKjkps6do#?t=C-+L z>7*r+zSe>L*h_5K>CUEMRoaEBI~ZDQoQzjw4g zH5u&GdAeZ+e~tuLEznf4T>S-5OS#o(lTw2CW(jTeyo`9>;X1!0D2%k&K%pq_Ag8`2 zUTJk22T7}zvnK}bRt}FDekyt8evwwNHjg`oC`|Z3^!awOgE!hwq&OzQ@lzz$P z;-Bw`Vec1a!cXCN(PMG?}INM>vyVx*&Q;0A*h5ngPxmD~-tK0ZD zy+1+`@sKf7R$_N5;K;oZ-gaWx?Wk%n+q}Cq8l*rhxCk!8nM%UvUPNzLmCbE{67ECS z5*8Efw{1%Qc|}0GII=Y!i3POl^aZ@5Jwb~f1#P@ny4`2%(%Sl?OvaX@zqJI{yoGms zikHjywGljR=i@%Abvmp>`($9Ig;?PZff%39 zToxG&=UdC(lDfq+!2$PJWBy5sj0WHqY8u%0oVi^h9inV}<()$O9nOl!2aLs62!xXE zjYQvt6C9>>S4FgD*rIQW7RhGIP8ZA9>7;p=7W5@_aw7O-G_Q**vU3MRF8|0u$#je! zL5$~Zexa6-fa7Pc!J2eDMN&I1ql-1$cPbF1ZL_-F!qBK~!BbNU3x?cB@+{L!?IRRX6Zdn`O!EpA@LZMUqd>@{$ES4n3!mg^QE> z*psJNqrAk;^w|spa2@Yuz@ohd|xLFFn{FN1dZT}f3P$Ad@v(ZUywmbU*NJ{gjnxBO|cn2Yc=w? zeTd_*(sDvGw5z4{BU8MXc-jGuGRCY1(ii~PWb{jaKIjZ0l>zauD+v@4nHhbqTC}B1 zEjdNc3MZ*M0CvlOY^J|{4sZaH~7rSM-nW2 zbA{7C;;7KlzD(?v_1;RGw06CY&Miy<6dl0`+o*O1Oc(@##}s@>%t1tA?wPeNUNuj5deaP-Gg)Ee%TP8eNw-@GF!quN(UQLEEAf zS`6g)Dg2N9T$C{0d)K!0VXIHV0EH?H=V>zt3C%lc9d*@Y(!(m&`ZE*jlVid+xrfL% z5NjjfPG&3}^t^0j_`(A)#rw30ry|sFvB!UKa|(x;351UbV`6?7onL2snxOQMfZ!3` zZz_#0p9jC51Fy5GCIu)Dl*_`!4MbrA%2&_$dktQn#4BpQ=Evm=kf2@viPd7XdHCVx(5||(IJn*vk!crQC^SQ@)`V#3;+i*jVu z@pPtJrogty!ITlcm?}%ws=J+}r`Au5HI5PRTisqu2v<(;+T%tBaFTTjYUA{H-;a;j z&&Tm0Uch#i(XDSk`%Kce8+t7_AqB7#wYGVa6rUh8y9t8!&cKqV7(yFdmBquB71AB1 z!cd#P+OHdlQ5kD*y4U77q#pi3c`#5=-I~A6iPA+>7R@Un)f9SqAtld7%^7Gyf!u-15$%B ze%iToc-K@ap83K1YALSNc<P7yw799CT0zMBp zTYME=m@+}gaI7k@Px!^|Siik3WD|z$FN@1}is&+|e!=KFRWNHhF>gd@be|l-b5dt|(hP1=mj3ZB zAsClwUYUn2K;LKN<}v?+%K}Qzo995Gm0_4;LPsThr%$3~T%eLNbGpZkZ2^i$k+Ms& z@DzPC7d76JF?cphgaK3z6cP!5ZI2|o<5|G+GJ<fU0?W5}T}y}ZnL z1mKXJta)CnF7BA2yU^#Vp5TGoA}g@)>UZ-*LmMjXhH77YMZhcukQ^v;p-au#QRpO} zySvyxcvK6OP$=8)z;1XSXzgO4l?XAeu%2#}h8W@I6Ymu>sXj=Fh_78P1|GYCHdOFA z=>$L6%fCEc%iZPuR*8R86eq$$b#-6yiB9j?x~+ z^uxd*DOU-!(<&E8%_1YR0b+fbKU;&FYepr42~ZCg+PzXg!?)3E#G%h4Ln&?5nG92T zk8bzDEPjme41`78>x6{F`;EGPrj?F?#$m1E6K+R2j1`$aA7pac0Bm(z0W=fRFRDrw z-Yd==V(^@A0%xsfX=9;YmQPkGl*0O)Cj)rFt!ceKbU9#^L|(4Km`3I3^H{R_m~L48 zT8_fV!xu|3nL@B3XkZ$%pGt7uFg@@~8sjza(A&`$w3DX@m{Il@R9VA3x5h#nwcgUO z6`7S~G6`H86T6zha%U$TYGR!}0Ly#~`}p%~=uBiku7(Z(ki)NxQHnUSIN1t-8Rw7# z*m;}y_d5i~YFv`MXPb?hh|2!_RSP$mNM4k{L&kp)DpY*Y3 z9GL|cJo}smGtK{#+l$@sC=BWCeH&mGGcm{sdm{8_RTuAcOXfzAEztsr87FZ$53*hrBM|!gXL{)vvRfY zpRrfgeV+xq?!$RvDkP@8Y|!ysAr65d^Hr5vE5r8K*I%L4ndmO{VVYiLmTwj$JKDm( z#<8lM2($_hH_GQ9OTMZ^*^C9fMUrPIA}%x_6`8K{nzOJ?{myayzbONDu->v@O6!Sm zNK8GO)t;nbu1bHph0P37f+(k+Nt8D!pF_&uVmj25aRl!i|7NsHcDYKN^1y>jftP&| z4hgFOsFaUL>@j1!Qnj11DQuMXSzDc@7zEEO3e ztd3JV0pC1PjclaE3u2bIg*1{I+z-LUTQ$ETPFJxy`awU)#^?h2ID7&TlDIrSay0mg zn%T8C_CZFM<97IT@OZM~VdC|%kCUXBXtHmyO)$^YI4eH}wKdIYsF$}q@@AdNv ztiWAnGk~k2lo`*;5tII`G;YvB*X6G6X7^NU``)wS5B#-@0<4qt5EPS@NFH&}V%FlR z0f`PJN%!dVdc_RF5_w|HS(EEJL8O}#nkln7>4$KrOcH{1HhkQYdr_Hn*d0Jt`Hnmp4ezFvo#Dy34PBE_V{#qmwbrK{2MCzUwrp{2l9PE$m7|I+0BZ@fA8`B7x?`fQmQA!hkDa} zKXaY>Kl%QP3;$0s>q!9S^hWn~@(_FazbnCCh5t$9(;W=7$mgQufcf96=%x+(-Q?rE zS=Pe;+r0n%9X`mQMIml_?d%;U|36^*|7phrGz1HP;YGBRm8$v+)%$t!G0piN zo8hChMQpY00ORy! zaLxPbP2GDU7ZP@VFop>9i>m>3z|nO+jyFru+shetghh17YNrRv`dl$a{-3UG1RkPw zm}qvJ1P&2S#eTAAxqJVu1(WL)TATa60uS0t!Y_gAQ1~VB-;j6<)CpLQ1W9q`E8=>Z ztDe0ohpS1=R+lrhjLwJjIh?i;T7o%qUS3d`NK}&gaqqoJpLa9>8{?ZK67vH1$~?<4V7EU;uc`LkrU+jQKP#bt@lT!d?WXhJ%dxssivoQvips;(c*q>=y} zINz?<_+bo4@~YN4&U4c#(WK{8Z)Il@=e|Un4~3q=d70+FyL? zAUksui)5tB=E{*_5#fZmwVJ;&89zGItg17bOjKrYf)npgZjuy{ZaD=v;I1)6u}GgG z17IbLzxX2Pzuz?5YyQB`#@KJlsN|`>r-FjT@(-L7vtd5*etaY{-ftfo&pI3@KIG|0 z=@y!q4{zhs7i^m_zN?$@_)3wrT6vPKrbv(IxZ0HASiIT-$Dx<+@hlfk!rP?p36&fv5l@%J% zq*fXN-6<}%TMGWc$OofG^FY@UE%kb;(&*CsoSV6wwU{AzUS9)(bqJR)OXZk5LrGCT z0Heu07f*oGQwaWaSEdcN(xUsHvjKu+)jesnh)q!#B085|uj8VXtZ4<7qOR|q>yg9; z3rI?U^wV%GF#}210kHmd6rr+aP9A5l?mzsJjck=)azQTkx1iEr;Pu;dqsD>7A)(&);nysE<*ADLnyHlmpyfcPOFV6x)t}p63%J_E(BPg^MpdC(!kvW|75%qumSfrF|tcN^6ZQ}JlVH?$DO*SrQ1a3!NO`c^F~VZMm1~gm?!zhx11@({Sm;i<(3e=F zPfck>W@Cr)9~gwlOSKDeNy4%sY1TLdQQuAsS+iEYt&(@|3MUvy3rAHzB~8DOHBks& z;&^0vD;)Nw94wBA*5CDtXtbGvdOn#vb@1tx8L(4cd7A9q6cj{dt%f}}Vn$*m>a?za(6*jiJEcgutq zr-6Ht4Z^V7eW;%}Alwb0>UTCu)Z{$Qgg$l>-UW-5#0XKq&mY`LF(eE}TK zC!hNl>ure|EN4Rv`a?;)_MWZ}Nq$Zqv6}J42i2J)-TPt ztu|_NhW@y7i3gvxT5F6jpDCxZXMPkj4dD1Cf&*ZO$cBU0fd_X%U3qqt~Mc!Jr22{>-8k>u8W; zXLr3Mo~=+GiTs*3bRI)g@|@-Uxxz{o5uZcIvAOE=uZ3qSKmhIf^~K%oX%}8N0$sWS zeGgE^EP{Eatq!#bapNN0)pW8dOVBB6#p&lS6myq`pCwf7*8Vxg#j##QqUa9x6mh3k`n>Ch5mt-EgbQQKpNAD_q-3^fiz1el3ACSH zw2A!0B_)y1OPDtZaN8}Pa;Z3v_Z5R<2b^M(=JHg(Za+OC^8Y;0K zeZWY7rE)|f6pOyFK`OHw&h@aCzuw~)oH}tNHmQz@0Nzp|90q~oC%+(+M37n(qed_M z@wY3Z7TGBAt%95{9n|QAM0-w!!@}5M@Gx60VJtG)>SckNVTO#~@h0`@`@&J?H3~C- zKH7Yw-h@ZW`?f55T9X+|CT3b*tAn_a4EhVPs#a&qNaHLbo=Hc;Z8Qz9YL%-9!1ylB zY#BV~>eRcvo@?Ijg?+hrsdI*+a$bbIdA7|ujJnhptbuQ2Y9D_t>FtSuK7zSu@@Id}kf zHbiYZ`VEU}4ndX9%N^oZyJGh%>UxkBaf;z?@cy4iL2Joy?dX;2GBO)SXpyS(llQ_{4FC>;79YQlRo zI{EA0{icO^L^dK&?k}*7;i|qI##8hgq#Y@>49oS&C<-sW?f|;jgyV0lmRN_de>MR3 z2hjJa#a;Sf;VWMT%aUjhkk1T6jifonF0|*2Fh0xi&1@JVT2vW+HByEiyaGg(7oQIq zjYktBegwi(4v#{!)}O_3d3jWCMPR%;Ruf%!jU|z#=@;UNUn=KU74BpjWS}Rrq2kL! zI04g<_(Yw?T4bf!G;G4dgFulUW)Rf09K`6S<$W9b?wDs&N-@aFLvqIXhEhtLo2lt8 z^NO+MHXN_>kxzW#j#Ks0%$E!Bby}q%QG1=4{Gy+hKIe$rc^OZ$>?thXf?q!uZSy=8 zQ@5wmI-=o}S1g3Uw%MXI1^!ZxNf~$X>|-kA(5ea z%=r|o@6+yj@Etr%I0oQI?CtJ~P`IoT@N=;m(%NF~3SoLFG8SGf&s>zPX`LZCLgZlg z+yPRA?|^eQjI{S3p?uvbBMts zI4+^eKb=znqGl^8>^!d=w6;1SNG$jRl?NHl_4K=tSk zR(hPjdtL~4q(73`X;-;647!wHK|xa+@Mb?8<9tOrhE}am3gPjrO@1}N@L)`{>$|zH zc?k0cnZ+NmeZB;>cMVRN10lWGZ(FPutn6gcL(QSXL3z{uOABDntPeRi*4x?H`Ll_^ z4^k|*tu3P~tPd1QVny!D?k|aUqgsa!?sb6x&IbC&y9#;;Vs6blY8J(Ar8bGNd#N#N z7zIkol(UJU4HELts9Mn%5=3{C@}&0)NZoKtTF}rQ1@ccu2{*+kjvuVK9J4gpZs zeoi)jMTv2O7kYKaatz;KX{@h?0|Av?Fn|yBS2DP|vb|vlxq7jdEhe?7?eb_a8?%i% zYTGMfvJ6G^Azh`iYj^gXsfmgCq%V|ObCR0DEN~hx|3$oQ*??zj_ZvBr2OIXy%7io* zxT)XJ39g(!%0(bZW|2jbw3EpLYK)tB&P6J9qAe zV!4q{6Gl$hs=opu`a?2<`O5Rro8Zz6o2rI8RMstxx zoEklNkA3v(22f8|gL}UA$ybP3)1XBHk1T2ZALCK>RtDyCfMCFFCc4@AI^bKr>RIZF zMi6T9Mvt)`Y#SCqbIyn8;vFK{VChfm)7CD=K=@i*PHJfse$cL^m1XQ4?nLxi{b(kx zQnFH>Zm!?k<1STXuGW&g_@>`JA-L1y!uPXsv7X^Bf-g*NtKpNAM(0m^aAS%hPCrR3 zh=Wn2cxj2Q*Ov-n`?pTd8NljGz5wM0psY--`+%1)x21jGf%Cm^cRG`CZ1$982?#RM zSG=0HY=!?lg#off@Yy6PnSU*aH@Ng-ulHT0wgL4$pN+6XT}SFazU-p znBQ2w64X7@!N4nN+0OSKgMyF+@tnKIT|y-a`aU<77w8r}$7WTEtCSg2!vLs!#UOJibXozvX?2fs9?mVlim4XeEIKj)hSdIalaLbz?CZ#36449P24UceI8 zA87+%UVCNQmta^UPPR?tSNRyeBN*x7G62^%aD`GlX4E9xa>I zhj`ycc3QTMYS9c2g(+wuj@Fq&ev^jGr|^65 zT8hN>-_^;GTv1EzIC^)Z;~@fs)xedr6ZpsXG7;654g?rn_1iij-bgoLh7vK7`|CgK zz!n~w?h}i#8`e#ZR2zy-G|rGuFw`4zfq*o-tZ6(KzvRQ0w1PzR2YJun9C zM&_b9h0Tw}&C(iEQ7YD1B)dI9t&_eB@5Zd*(8g}bZp@hY!x^1V%u<`2!X2et3F|P{ z)zPdHCt8t-k8F=yrZ#yl2Uj9Y>S=RTQZmn$+L8=vveY^O^lk?5=H-6gzCbW2d`P_a8QkI_q3?GqxW|xJt#}V>*PiZvcREB8OhmXMN%;*6 z=L)JaK!I3(;1N(35j$J$h*SPCkGp$~v{e}15Mwvxnu8qxjT^bz9ZEMAt;=HCzt|qrx=)4)ZClJP) zu_PwxBwX~S0F-w^#J)N*gF_w_fez}+Al94bv%rUiUREL8yU(M2{KaHeodU3Tta?AC>$!?U9(oL?WMG{lRnix48v05p^9NJOwkfY+w+KpnOu?N^;uzS{^qPb0Z`C zHZcuDL0oHyf^xF)Pzl*^sj%?uCwR=NJ5T^5=Px!HehHS5pzc=vAN?a>uvK$ANshna zpmj9!EH}v0@?uQqQ1!a+enlR4R4} z!pW9>!dC%GxRYwtT=S}&MIP^$=9{P2pn)cCk7hA}r!ZS2OPjG&`MFP~wQEkfY!rPr zt8v)E1YMG+x7ez42zX?l<)QeQ-!&>4qSQaOacLXHxdj6Q^l^C4?rDR$biNHFwA^LG$K09@eHD%^i?+{R=jrr zP5El~XU*Ku8R)9dB~~X?@SA-sID`OFJO=h>9q}jjA__Pt1BbcNp0XN;j6b9Fne9KL z)N9{FlKF8sr9pl~Z#8MuuRf0p3rc!%lo;##krIC!JT^=4{v|&9RJ;7PB)HVo^w(&d zyzT)@0@1=CIBbsi*OZ+SNBTzi;&}jL^-@|`AQBL}u#CqvPEh`ml*LG5LH8^0p|Nht z=uv*@>kk$CY!t_Xpwn3w;Ei~dCn@hw_dNie*XxSefXxye$4I)Z4vg`Migd~I48<|} zTz#}okq6P+Q}l{6PG*cZxRrhvWDXVs%xKm&;=?i(V!&3a# zyw1;`oMuF**WAn?UtVN6En+62u+b*edS-C3wlhSjz5g?^01O6Xj?qYdzxnWyM(iVV z7R|6SzH=52DjabZtO1q-miCJE*vYg_7{e@z0E@YN1+DVuWig#lqTEeGMT5^a?a5X$ z;oIvTl{h2a>Ib|H6esL8-z#13j9DqfCiJdvcTll3*9?sH<_GgYuxz3^p>utDjDKQM z^lO~L;GE$22JZ}Z8^q_dZ)i^%a{Y(Tfa-1}D(~GzLNQ=-*$EES8y(xe^`pwmK7-^i zRuB7Zbds5Hp6FMY{5G3Ql-T&9SvzHLd6zwKa`lT6-?60nt5IN;1})Vt^tri`r})eU z$Gz!dt&?QC!%Zpqufa2+6D}>ZV=UJX*J`$5tSP<|Wn_0|0&$j+sR#eXhG!$+5B=UM zXK^@&mMT{s?^qS{@`%CLjc-AX$`_?sF7ae24iv|J%Nr#;te~%kU-}ljC2Rz00j(56 z3m;kk8vKECs>jA=Hyl$yvFi5j)V2JpK7|q8uThAq{`>ADuk(J3lLplnd8pBw-AqWK zy1sOYifJx)#m58bIt7aPgRiCmy*GhHQc}HZnA13fUcA)(P{m=wtGxkY&nrNDaRVdI>tK==Tz@j# z>Pt_*#MNieV0*uea7f=-scjDt;zz*(;dK(MfDq#^7ZFc0UxxAsP_hQ7_WM)U0t}=h zd9YLuWoE;gkY=G|Y|wnxaTu1MCOYim9bf#16}9;NewO9?_d ztk@pBP8E~M#g0RZaz7Pr)zf9AIK>)$aF7ED0y>KU88)%sjDwBogwVVhEMfSsrs(-& z3$O0;yhO=3VrYb^f+{$z(pGzFUf*ULUZ)8;(YD%`k%R=DnryaBf#V5r!D=RGk1%Z6hWq!W zcNaFlwC3W!glJSWh^VOk`Zx}2yHx91VHa$$O)tu0Pk}p}pN(KlRSAJ6a@-JdPxH&; zY=2(J)8j=-iQb)y{^Td_eDT_p{T#`1vRa}q6s$nfSx2D&xRcsQhy7GA(ZpR@tct_X zq6MYJ0IsHh(g<3X$ZSn}@O+9(uv5Cb86(=9os|IQhU5cL2*=dk_k7$7D3k^*izaow zI&vtCm>+@JaX9w~lNTFXQD;#p#i01|XJUCKa~Q^e0Gnz!2L+)M(fnQ33DvlQwrm5+ zXo{KOG&CV?K%BF2-gO>Ae_tlgA89&7=?cMV}_IN={wKqfSX4 zrD&M9fnrsmr^O(47$DSue#7HQx=)oAW)srdI&u63b~2j9UO0ySqi#m+Ns09$LT=?r zbtnt++AMvib7qq{)UfIb!&t7D_hba4d&e=@n&CYGV0=?D@zXa46Y8t2ZH^%s^_+5K z`RYu(4MSj}@#Ik&lev(2uXEjPo1toC@mjXNAiXC>WKP|ZU|S>@Fg)1bEcpWt)n2nSZ=D5OJ$enO zH&)!|PX6p9*9VB!ZG=3h6R8QkDXmL*M9sOo*=I)~cJpS?J8}ETMLz~nL*D_g9?JU5>Cr%@sPsQ9K#+^Y($eyvkJ2?J$uG9b&rQb zSsp3PaV|P+f%t@RtRPb6pM+zhxtq=uS)ohu^=dB9V!1rkZXEgsQ2|OucL7AI9dpYe zkZB$`m>S^*qVG>g0;lZB9=1g=dz!zi#3SY2VPF($&5%va3rz9WJ24a*H+) z3ZbMavvas9qQwuf7l#H1mlrjs*TW=q5sRrsK%U!RwI-$GR+VlWT`D#X3&Jfli!lgu zu+~9#WYm2`%aaMgIi6@1#HLpK@te}4ec5tPA}?C~oq1~v_D$Q8R8Ns#qW1p4%$zn% zaJtKW`Y)XL+z=S;n6y8N#T=~{g-kyo1_G|DA zWfbBeNmJ%IpwJ{x1*u%m`UYlvUS`hhbsQiRzzEc<2}q zzJA@#!{b#^NS*PdwpzHW8l-=FPS~*lBR#LMfJ5;)qw7yyx%#p!5Vk8H31h`se~R>z zGg)!6!|O>vt4A5+PQ8w4SV!UNdx22PqUh0qD7nYXf{gG=Bqn1av=XVdWVFeL@3I@a z0Sw#f_)JF7qscrOq^`-*hGROOk8&p*j=k4_hXw}dpw3qi6$sy_C~wgXQ-l;YFD~hI zZ=^2b!_Jpc<%%7II^O4f`MmwvGS%x4YS>e92$hCipEoDQNU5meLnN~*i|RD36}Ow- zK!~ZfRB_YQUYqThBpk1Y2@_q@&9m?uuzvf*VxqbTsl0aqLe!B0h?1Rp-+e=zQQF`5 zem+mU_!bkf2n;+VMv&jxLz(esl^XE;-=!E8)SKwA*>hG3e*XT`Kopu&tMO;Fcx>iV z^G^F2!7Hm{KRyQT1xqP3K;+2oespt3WGpBtBRAmv;tpfN33!h@vuxr~Kug^xb)+6?aOX^iq^Q694mvfn|jWbQA^`Bz0mj ze2@BwO>Drg6m~vXZq<8{J+EQ&^`4i5A@vi?t(G^26N^eSryYMcI#f#;s-gh z&|j7fZsL?2yPvjAlfW!}p`HYP2DI>cKV)?eg%^*1Ny!M!52I*vbH!=DM_F6hKaRpTwvBd+1<{W!9iOoa}Z|w)Ov>eYwFln2Y zPRN5*LuYj(5`Uk7V#5tX&MH8VfC`T-XhOr;Zy=JOEwn#1%o+LD^2lVMe^{2YN*0*ha)rNaH_%Hw z8AM{Pr&7d~qhr$?a`>paMjl2Eo|oQ3%G0Wqaqg5ZD8O-cIUBb+uFjQ;Wyt;&@pq4l z0uld8+xLyjD?}2zEQ6w7qdZzCY+%%O{SpTwlNK?e+)Ng;5x)3F5F-ZzOW=9H zb;EP@MDJVQgO2idNeN>ae*33es|Gf?Ou;SAl+g<1liGIVZ4Mj8C$<&O-7k;99A;w} zO(Vk4VnwlTi-;6UOEtHcg=Z#UiWeIV401a-7gA3|#lM6Qgqn`CxjRo%*qpD=?PX`J zxjSxy1FcyQhe=t-1a=q(YDxkdu_m`^?YbLt%Bj7sr<@qS7t-tUJ@NRB&gZqdbS@9G zOwgRQo(H%7n{^{5ZnP%|*wEKc#ot zK~pa>2{R=n`LE4dBGfG(+e%7u?J8~JYBUpaS_9d0x5fI;puIB|V_s+_vi`mJGX z5~jW;u28BbRiy0XbfrVmDrGQ>zE>R-G^0t+CqgsyILKpj;e)F7=!}x380fp$kZ?-P zMop?OMmWg;nih82HN4<4@ae{erhNBZ^$qTB96F>(ZX~mwBG|$Hxz{Jw4S5>KmI2ec zv~*PpHRKh%nDZD-9g;B!fhQ4lLfVF>cA%Ug?=T&QG>#jNlds^S<6Y`vtdn%)a4~7oIzakV4 zdq3TE(hgpgI$rVucE!%LOmGy;<+U}5J!jTco0`wrN(=E`5}TK>$P`u(xrJ9D-sjmX z>VEiQ9V(05jcquYjxY`R?fX?{f#mX=`?luo-5C+Ivzv}Z>_?g(!s~~A^9G~52Dmi~ zP1w!d68iWSd4TRtG~_8#i0d>NV4wtAb@M*0O?MAINmu&Z7Y-$zkpJDSu(#M=6)sUe z`V$%?=?ZWQkuQdvTT{?YZP(>Ibm)Dy@1>82N9$$~ibX-n?fUv{d2#t=Owir}Ej$Os z5h4yeWfZs!hhBA_vRZTA>-qTlBDH=QP35H#iph*;Q!VsC@V%PQL>yWl%R zSX6Jz>+H8S#IctSBMSAXP*yzu95az8!t22m>2&Wi@U-Ro6QNRt=RjQEv9xNBYl-Ti zj5ru_rro`T`lrE-p3cZ21D3V%*HOq6*`d2+W_PDo>h}VG3^}sN_Ch?OnQwy$04SqU zubc8js13VzAJ0k~ki7_NC>qfX8E(KO3!GYV=;Bj~`tSbLiwlf5qWJAzlL(m^eH#zU z5y_GIKY*`pUL-y_h7!>0F^{Z8xTme6ZyhOyPP_nPZcZd=k!ZqX*VZls$B*V%Q?N{g zvnZzlpJY8Api_0Lr|5`p(F0OnzDf>HoBFBqb+PY+{zzwnfdXJ(DBqy`q~BBr2pWid z^-gD1&$l7!(pjP==eC#YTYw&MEs8{do*m-$%>~X4`49T+Jd6MUyVG70+*tia+Ji!Y zW})0b;S_Y3+@*u=iKJ_VkRHl_-Gs4D3%y`?cR$|#0oHfx{$@6`hNDL<*Q#@0PCQb! zx-kHtob@Il0;{R=524eJuBtliUj1Jtx%{48o8HFFc}oT~Hp*VE`vgmuNJhpr0yFQ( zh_b!yy)VHhrvID)b<+m?CS7=!kQLa7{At|(!TT08c^fab&CHx3jmtxH_<>X zGhV0Y&(!)K4#Dp-p3#334K%q-Jmda6g};>e|NM!h_8+1F7e$B6zgKZj4J3GJa{2j4 z`tPg_f@}D;2Qpyv+Nlq%_$M8XSshk@kMUnT#oy}f zt_uGKj1sdL-^of$3JP{n3JjZbS~} zzms0Ri4f2ct(yvY3bnZ?6-j;2)vs}zhc#!|FRbdH$oTh8<0C>!Mm}fE?KHNt8;<4* zuc~ggI|ASNvc6kJ?_m1xBLSFgCJ@iz#kv{^k%X-fH)!biY{gmti@}3A@U;Bj={8tC z-M|AxzIm&2MnBh9w)yC-W)mJb8S%}*Im{uL;1l%w+;5y?14Mw>rJ&e)@Hs`^UXNoOyk2ivp5-ye0-%AFvS4sheyQLU(s zCQdp7xgM?KN_U^a1!KT&KZMrK@u=iGT#NMg#6b3ZG%)ecGses>^ecvFa z7=4UT4-IZR)nG2c2Lvap&p@&JB|B+DLP=gGOxE=+7bVH;Siau>W4I7USHb|*Vtk_U zfV^PZc1{Z!*f5bxmBcpv0Hj2#8M8^@n;U%=nIUu62X{{IX%L^@*}@9iNE)><`swggI~^KM^bMKp z>$bx}4<7F?vVV*O0v{z|0`&m5QY;Ei!G9U>G<@F#Rv<}3w2A+bRg4#cd}exF%Rc{~ zo%#P#woR&;muH4T{Le5SztkmKp~!vS5KesVAlL{{kNrm<6U?Gy%gN@J{{rek& zkAsXaCsT+PB)|>D$B6mw4>5WSMy{A_683i*0(JPm_j83FKp3BobQ(fBXn<7T{xE-M0nJS?`Ut&f}S6)h$IuKpj%u~G5mb1 zEr%4IANI1K5n=00M2p5`4_L-Bxx>^MO>MvU&X$&x) zbpCFWgaLA;O5$1_Sm6NVEXTT|wOGCG-Fq~e@bxm)8pk7VH9BvfX%hyc!R)KKN=@t* zyIo&zQt#zvTks;;jQ+?I&T88&(rrpPxg_n&yBCi4+v7nv?Doa&tQ!X#KF^SsTY$+8 zo5MaGjSieZi=DBOCp)s;5&G>3=QoS_N_ML*Js+^aG}b5+*yUL(d^Q)c(VVMi8A^TP zzxRGLUoJGUTCvSaC;aK@=|ZO`=NQ1uQ$CtQz-71JgK7Yj;TG`teK9hqkdNa>u7DZP2i=K~du`90kWegx?mn6IhN)qQGBYUs*05 z`DbnK2j!1{d3V!C(EoiN@PUcT5KIbiZ<|0fJetnnwt2m9&_HS{P}Zh2kRvF8bvlM6 zniOHsYKDIM2J%9+sjdD;~V|D;uJ?HM? zV$wC>V4-Gh5&EXlO5;1g+%H;FQhBGNqw~m%o8z^tKzU$oeOjoe+hJ1CB0)p=dQlja zvSULjQoET+ZK0AD_0D3hyhoXA4p{`dJ@y|F05QCe5Uk@tVDJem6k-i>TY*H9z*fKX z&)Gw~aV|gBK)AUM9+!0jx7&SCd?1oiTfstX_W!8>mbG)FX@zU zL@z_=ZEzodl?shq%{%MIS6*YVx7j4an~saE9aWtlhstF&?ss@Z61qEnKavc)_#$!G zudmKGi0Dn{96V`N-bVpa8E3-FHVTQ50q@a;c81X$wI&KA)w;ZhF1N=jejb(`H9Njl z4(yDmUVG*R-khbh3a0d(&6n+Q@V^XJNgbAzM3JLZYPEzm9KFuoJ@fx#4U6`Gh!rZ1 z`uGatmBmasr&IahoUw{cL%IQfILFvmCJ*@h1l}K}Ro!d>ra$%PtW#bok7-|MXni&O z9kqOwivfMo_tSug76mCj)cdlIEtFIy%lz8}-3IZfaX-eK*9TMG1&^=MkKxK!abz-^ zEBbF?_Nb$pOrlYytw+z(MdQ8uvZDJ>xx!)D0uOeNt7;TY{S}%;LJtX)=CFKTN)-y~ zdrzhp3dSh-g;LiE*;OB?_l?m!XAc`VRvz=Dj}qMybT1{@-~D}YA@JEIi8jljDeG&n znDNk~Z8}-bksj?ET1055;_l&Aw4yLe&Q`6&p(gID@8~cNc*@(r&$DWCYK;g1Edd z&v`6zRFyMc*u51#rpA)@!k>Bg)ijxI&AgQ0AKFDm2V2-l2sQjHsHUx;`ObQl2u{z@ooe zW&Je$XLE^3f#zCwA+D&ug`&|0vS018OWI+Pm9<42veHf4?GA@{&wOrUtEzi9)Z}o1 z5-z{GbHd#z$s<@C_QmVwbEM2l=J5jZoBJEL_6|mtccgC7vq1%q&fTp5Hv=KcI5+kS za<|6h-B#yxB4n-G+u;a!h4>O`XL;%f-qpen0g~i3&poS*f&;^do7dOqXic?7kAO&v zspc5-9$lETUuvzEEs=~6O&)6M?M5l+`-C%FSiL9)lWSpHsTmJ{kEp*vpojr)HBSJc zY~J<2Si_=QB!lb0O0!h=D7-^p)v-i`tI6hgNK7i7Y!+9LeVNa*TQ`0#HY6%FU@Gzs zc{3~O0gkay^z0YQCVURwbgB1hO}vaWQQ|(!(I&@d>}Ph#TX|$Z;gb81>M3s^^5``zJBeT~ z7hmZOv+x{+jB@8v-{+sZiuDatG2|SY9;PvEUhh*J4VI|3p&LIWYR#HuF8q~M&Gt_- z1(E1ctUUp+7?!1VnWL+9?ua{9o=wuNT$T&%LtI$WnTE9lV&!sg8v|!I?7IeIZD&$bEtSI8Yv9 z$ZktV_MN;8|K9H(k9j=@MT|a&=d6lXetVUD^F_x6IgQ2If#a(>iC1(So5gpVt~Uh7 zquFWs+FDx5XOZgnH(jsKsAq4qZoI8Aoz^{W9bK9#gBJ7UI}TY-h16*qJ115jCJl6i zIy`^>cH3vRL3s-UOajuYIc0Z!LYe(=?#Dp6s&XN>Pb70BXU~vf4#3bV&*oahsI|pX zt+d4apy~zI`(-)n4reSuZroV8-Cr;W!LW;iVO*UK=OqM{ruha&mqYGHD$OQ@m_09nr`d7BfKf@DULR|BhO71w+k@&e~9=Qdq3+Wu$9S;aB7 zz{*!7=htUQ%cXYVJ;u%6FKdAjX^!c~hDpi~l1a2%Yu;yPo>lT4SeLsIJeSf8!ybc& z?QNTRAP2RVhC@@v!{t0P9=re8eMIwJB8%0_MOE21yWJcaZWqfB?q^NvE7eZXJoT<& zF+e26JKGVpGg^`_HQ3nHsVkwdr1Tw%vIr_*H^b#+#OPB6%ulUP8_ zK|Z82G{7gh)l|`*&{s$5w66qLbrLlq5$zwl$#xhnrX0MpOw#Oc9dfdKXtp%5N&+wZ z@T5U<-g0SD|J?eEvH#vd_NEGOhw#;6{e6Ur{eOhLby$?$7B{S-5-J_i-2wvADXEgu zjndtnA}uZ5j!2g; zbp1z_Om#5$uOb^eNIw2kkhSs8X_M|mwFq;s%a>$~=h$0MWpwTXTV$3PcL2d9(V?2? zoA4@-`Sedehtp2YE3Zsrnu4S5mB9}g2ZX`h@U3r-sE%x3{}Ha6PXG0hMBmtX@-O1d z^f5OjqJz71-TOE*2>$VD0I-Gb!~N{^&6~A1d@&xbk0J$tX3tkwO?|r!@t1G-KB0!* z|A6m4!b(cmR`aOsvH9cZF1LDYW$5m)*jpvXw!uo))-3!A1+UqRPV9qkOQY|v^96>- zA|h6c2PM%!wI)}>3_SmrTPx-{GZ_&-gh4-pf|9=!rrn?N`fZmy2Tz%+0N`DaTR4{&zb5C+)Kx_V!jmQUAsxVCF-@D ztl$%ucneCSNQf?uN*ZO@>bCYD>2W{$Xw-M_acw4kNmq>_xy>r%Q+$lz@AmDJY=Z=_ zX(E`+Y3{A|hvdSb{&O-NU{5Xkha~=EQO(`G5cbLw4_I6C#{)z6=0zn0z)ma1DOno8 z>xv^?&G&ZyFA-ovQAN@K3>a&?PksV>D+1gvWqNRM;IN@?hjiN6 ziR7?*Qzohz`VW{{l|~q}*9|^Lzamiu&0SB@22s@~zdw!fFHgw#M@VahWvf zqV|0f*^Tsi;tDw@sUkR}6WNeS(nt=mw)W-@dZ#-JXtp|R#r$>rB#V-420r3D@B1zF z$EF57*D_rzskS}$m+bGh8BoB)uLD#18spB?6QcTQi>{0cRAH6jJ5%mQsCR$!e>>Kz zUSfJo^TxA|9;jIYqG{#yhW*|j93D2a*Sq}`_POEqyn5b%f6W103Hy2E7eCPI=Aq?u zxj29X$p8NI&`(lq;i6<&tZrDPkh0_p8a| z4V<3V44~NRU}c|Un$9>VylJ>38tI$;Emd{8&&Y6D)USuL<>Rv+$!;twz?tD8FOSY< z*!@d&oVsZK8O&yL*f2FkJ^1)g2>#gl+{FBAzH0H(0jTw$CjlcuP-7|-55)X6^NKFQ+Q412xLcO`}}T_p~kM>hPc4YJ7oRqb2AgbrOHU)Ae|W z!>A0ky*}H8xbHU@XZ6S^AfMKf`vle1y-2%EezYfOM2JDVPI{FKP<%qgu{0Ktmvkzh`-yuV0~<`yVUIZ;GlegT7yF2BbFwh^04fPVkE=U zsI>BjBndv9chBGb-aLn|4NNa`bbwy-eA;Zjn$5D>E#QIY}^fF(VSwqGeW}!|5VEDIS=@x;kZzb3)_VKTXvhld_d^j;B|8YX8HXY_Vk~rFWy~H zXo)_5U6UpcvJ%j-ygnnoFrA4&La8x81sUW@4pvxdLJO3!tgNhfZ=t!0ozb+#oH%l* zAQH!Gek<#j*t3YMCd~S+*NkJ%G4@r1yXXG3{VTCgbe?E737D%J9AFsRou7pn%V%vK z&DW#b8nL#ZiSH9~`CT0u_8hjJFFSehMtORcT6Lj!k<}XP&F=cGCDAT20ZFvTdDY0?GejfHSzt={)A+|Fk=0XcV3-z zNAi>_kjF!`FJ%#U#ZLry;Y2?zsF!`b9tF_pTuI8cgQa(}D$~xpGlin$db4H0-_CISa6=`d!iENlI%37a`szkMP}&8UkyiQ}Ji;vHrtfDfM*mRkHGNWj{m0Q(xXj%?A2&#~R!t{d}MjUql4T``$6^%jx;oa7%5^ zWz?FMT0ZA`_3C-PN>NLTe+aq@=U|Ym3dkx^aqRD203`TTk3J*r6^lUVp!Hx1{n?FC z8?e5e{du@6QF1~D;iBvy%__&O6wCz4G2huqG)GgldDs6+iUm!0nI_DU7!i%6ZIb;w z@#U^s@pJ_&FpQ8>J;O!r&*OgKClH6U9hOK`DzO-$wGMkIJc{)NcHhsM1NXP?d(SN0@Vb=0Vnx?}vpT0B}q z`Oow89(x6(Q>WeOpV_?n+AS=KUd_7Q*8=ybTHz})fMF3_7N4 zxY(a*i8RYG<>DtP%;XYZTRE=XPUA1n0yCk14yT%m@$B2;xNzHn9nbd#+|NcMX@I;i zyUSFj;VrdN4%+qnYo#Ks_s$l;shDta{MaKqoE{5eO96d`P4|Vb0lyxeWwr+GvU! z6%}=L!Ep^<341EQFMy7ZVak7WFAG~(y8Bu@9x2vbBjapQ(C|69JR(l>P;j?JQ|(`= ztE+Q3Mq1Wtodw7G%B?zEUfI!_uOg<1et`zS!FthaJLJ^CY9}860#!-d7lC1d$kZd(-E&r_kMQ+b~b zm)c*#mj`(FDoq<(AP_|0B<$eQ-zUYV4Nk4)_ow9(G_^t=e6k0tDh#ik&a1$Dxn80< z@{jG5boag4&yi>pFEc=Q`Aqi9X9Zzz2f*vMdy&*^Y$Ays^YeUrk>vOkY%Yc>S$mgJ z%_F2A$0HW4HdYNx+FfHGRwI;E-t2TQ>U>(@A>y%n{1(qQ#n|Z8y@=NXFs06ux$fM= z-jVYAIcL(&?lt+M>)%ClSU zz6M5>Oy`1y2h;|(pf>({pGp;J1H6E29M3GJkdxhGy8h!{RiY3H3=5@2_LEL;ogM9+|une}F_o}nK8|5Y!yWT1x6pLkrV3~l}@ zd2(uV1e_xNpC!-jMU`h2KCa=JyqF`vi+Uaps~;-0?;O|+d`aijYD>x(w=A6wfg2)p zH)*aqQiB9-289j!Q}C0ytecm-Z{Gr>_)v)=ty1wvVvNPb39vJZAR+tHW>sIyj=i29@o5Ha*&!L#e_xz`vV^ibj>*@4y?=TAa5;*_TX1%~BaEPV8iGhGm(n(_ z>m3I4=!7VVr!0d7hEeu(5*=?l2N|op?3hZit-kb%6E@F|kdos$k(-=b2YsvBmCvrt zCS}9RLu=&6SxjVokk-J1j)VWLb6VAAd57jPscvx20U_tAj@u=*!9W^uPkiy~Y9d|- zBz=j9fb?|Ir}bw9cLf@N)9XzPf>4h?E1kK3jZ9{K1uto!=*-P=+g%{VF=+-|dczD2 z7GwX|te9fJl6pHaYz?YHIhB~-6@Pc(3EB%)qp@~&pi3v#W?UC$_LfV21t)3r8Bl$) zNnO52~E8(1RQ1?Y?#&d>#|A(YC|;IB*5wOl{uByd~q)_hvGH`j)#KB z9I9Dqwb+U#*p@StK~yR(E)M#T*^PR57)A%*A*gb_+}6V&$HQ>jeayC+|5-7tjWl7j zS)$KuJ!0qB*>T4qPL9|Ndoj1`Hx0N^~X%+j)RC9pxAdO*8(lh9FOM3|3 zV1X(7@<(0RjmKfel?yqkM#_`VbCq(seu05JQbt671aN*}dtV`7u=>Ud18EX}qQIfU zYKlp=n45$gmo}{7StaXkBN=x8UYO1(!a}A>59QuWdohF6@EVz)#Kbo*RopEu>wu3~@k)g(nlwU!>{$x2}BAc;DW_N6# z3&s}3MA#jeJp(kvv}HaZVo=Tt>Qyh@*m$-+kl_kmlfX^RCx=o}P)3rAKAlxDF`?_v zXPeWR>rADs3@_Fy`7TrK$FJt^X0bY8eTj=#A@>G+v0nIX$r6%0z&a~7!yn-}va&2$ zrW~l8lg{so>3Y286HgG0;irhpL0VeF3=%(H<1T*nEcCa*Bd7%_x)^xbDG-X)KKGPtsl30||)rfw;#MtRnReUs%#|MECJQvhRFbHxA><$3TTl zsSMj?iK$oG6kcf;?7)^T8u7Y5RW-zgCpN^BKCHIaANuLT(mIt?6epX z-rj~h^k{r`miYMg3Jc)Qp^o(j9=e9#8Yc_Jt62SN4*5-n?a1&29)7Akc|-90aF z4{g|)L0kag$*_dWyqg$aK&{clsOSZr8e|N#v2jwpD}5Ka`j?Ixs*&p5kTAGdnrJm` zSBkDE>cF_H$0YD|Wi6p{Ss_9Z*hPu{#(@~(3QHvEGd!kY(*SW%nsV{ayEWy!veHZ0 zx41C!Ul4YI*Djst#NG!@4^K7@L#zFpMp_ZP>7@K_E;FugEQ)nxD`_@b?veH-z;PV$ z1T~rnnF`2*tzz)Bp$s*Cnr4n3w`q(C4KTKT9WaOGKytfOa!VykzRGm{Pu1zn(0X=W zRlF@q!OO>BqyFz8o)_w1!}h$~yv5PEuojF` z4}UVl@1W@1^0mbH0~S~vExq8NUkiyG&pFYyL#E>k3f*Cw!7_#qVWZe!k?tv&92);h zCzLC&E_beDEvLMa_yF(p3ig%qf*Ju+0-EBr6QHEq_v6E*`VlBmc}au+F;i@Za%DRyCL$V z2td)qf7D6IYj(EZn4CWiJSWDp;umhaI@Q&vEQqO|r=Wj_}B~Qh9 zj%tNyzY__t9FdE)bSY*JHppmt4v_wl+n|#IiOnIXy$+evlgrO7NJA#xbMtf5$Ap5j zv~(oYk?T?M9I2}O3XEb^5wEE;sR@rGnz%DY--3ocQ#0||8Z?0{)vZw@KHyL&%}oGRXl$lo_cj_@vAQ zKRsHr!VXSP{mJJ-a9F~tkJmcJLS?2-&Bp=G5h0md@DJ2iSnDnl`C}d@JjSg3Ip@^! z@Oe%$BGag?#h8sI^0~jeFRMO;I;GBTUeiefd#l!IS46J7lBeQe2to?dzCPpa2`A>W zUAj1&DAk{xD!(#$-DQBYW%qo#iqy-7uGV7}#WOTH!A4aP(lCh#u<_tB05O@QrQHN8 z=ScE-nH!FgM$4a{^!Ts|#3fz!5>l`2i_JhI_U6v#OUxnh%WcCZ><$1TAg~6IkYC`tC!-!PwRZ+wj>>oZCBV(A?-O>j%c0p?{>iJ_&bI6AL($MW#~8>8W0~%W@li zbbA3({8-NN^5S;>IH6uK)twkH298X(z9=N=`$isi+^p#OMNTSf-;RIUen8MXd~{M~ zKu6&4iqLxF7mFaAs8RZ|U7a)ARs|&Jyr<>yD_j+f2Dh5{ArPbc3{|4_>5JXyK7lPe ze$7;kaK=5NFyHP?*v4t&tT{P^xgXEib; zyWP<4#@-SybO)=47cs4T&WvfN8Gnfvwe5>Yo@^mjp*~R?bwupAy$yFa=`M51l zcVPpsSKnM~RkLVHOBaUao%|pthYqR~zFn|6M%jVObVVpSA3j%W853`AhPU+)CtZ9l zsW?fy0iy~Zf_pMDfFBco@trt(TYoC_`Fm<8TwZb-hh9NUb$Z_)uLL+aGmw+>VJQ<- zM}LCEB!F@m_V7!Bg%lY`M7wu9y^!RKvH8ld&WvcRA`j`Rl5ESKedQ&h6r3xxH=e0+BwUKR0aC8+RalHPa3xDZf zCj+_svpjMF>f+rm2dqwy0CYy8@ClS>Q#5HsG}S$STjJ()@Llh;=M%7#R!4hsl!Qa* z_z4-*@BqBt|27ztS{k)f#EX_qfwa&_?1NV9hat(Y?^EjKxsJNJ>r$RsJ#I~|1~fZa zP9SDa&y`^MgJ*QsyH26!z(_NFK&=5F`}lq%&7)>Y3JRjMG@YwgPL$*oIL?%4#eYQM z1)!>}VP^;pi4q1N$B(vHjyi6QHPslP8%Uq>BhST#{J*dhRUnf*bQBwtBd#6Gwk9Qv zvix1`%Kq3~rI>TzHqIqqKAp{!jaTp#`v%5NAb#R_Rkrz(3W$%d)FCE4?4sqhf_1z&I6iI#fct~J!Oy(?7axng1VV{8rhM{$ z^?U#>9;!WDTj0WQpzow>Vf-VbZc79z(v**^8R$Xz@|D?!{{~(2cbyJWkC<<+aoW9zT7$Gzb#qc3BYqz%k(Tzg6%s9grWq z;VtRnC_qF$6)b-=SnOmKxE3v%6ESV`5Q|gC!K6oBtYT*}MO^4L^9Rr8HnrliN z0*jl=PKor&Mg$2e1@HE2*HS%>m^){>ZXB`8Q7fUyy1A128bD_}(L-|S=NEXoNByh# z)&EKX7Ty8OT@M^8Wn4wlYNMw1oN6!IQ>$hCqM&+Bh#ZRR-55S zC%t)J`Q~Uuj#d9E)WDoW_tt|>w?X9VmTse$fR$Eb+Kc z49Wi&{6GW}6x4SwF$f>3;%t?K1)Kh{bAXK=nFNI4?5s%}p9cAy+9s-!kb8f@e8)Cs zX0xpF$$`?2dM7FVSc#FsR{(U9*09Dml#wYf_eMnJ&)@;PSqT7YMc|-e?E)y#G}a>f zpa1^=nTiQmJHJ*F*USOp{#dd1;XUm!zX31@G}lL3g{~-$s>!Tp@&EHR0botjC@_QC zsZfEHTZJ5<735FH_hw)UxM|#y(wBY_lli+19~oHQd!6c&95BT+q;!3100m+sp}98z zKmrd8otEJ9Ro)$p)W;=x&kYuN1cXS%v}&o!cc8uD5lH_%QoZWILlj56gkMmoIDlil zAw=Gm3M1e+&`KAqIY<@_Sm-$2M$V_hiE}H}mxSgiW5u)RHs?f9Dt<_3AfzMGDW-Q)qBw1)ks>B|5aR}=ECNx zKkWJpq&aSN7$9?pp5>Mb>&^Qr@z6Q_j}UX|E%0baekb6#00^xrE!P$Fxs9+gtY`L) z^q)A=a1GqS;?!=dIz7~Nbj+bk75`-jy4BjB%TX<6zJoD<3j=`PwrHdl^ZxDs1tzON?cZsKmp(LHC_Jk9D(}5pKE9CN zMM^kk-Bhv+8Cp&x$OZwJnv!!*_Uo1JStm){`?&sStCUD z1c-}~ow=M-_#G8u=R*=ljF*Xy|4Ky7@im9-p269N=x zF9D5i@8^`#^qXK*xdhnW!Ai7^z5NL4Ufe5ny^fwfpwRyfND`B|T{p%Xg*-exES8EN z>$b=yj?^$803EB@!kvgsYgjW^%I2)R0xUdE8P6iwGwE?~si=*z= zRu42H-s3MwTxhxmETeP1j@QG2e)C9Tz~M@64|1!*BKewZ%(-;bEY!F-0{HWYE4+lfR4giw>b=)jPBt<{jic<{iZTYr?c6^EaM=>h z)f1hH<`duo>g!ZGjk<&@q@ALeppawQ$9=MPyagBh6ur1q}?gW zkRW*dwNSSAmyidV}#4!I^x7^40V(63Uo6^zpvQ~Y$M?xv5sI_d&T>gjab<-dVb zEMvIMx$MjER~vzvcuq<0HR01JXmZo@-tX&dm!I-0*F~)QMth)}kCi2=t5~fpPe&|6 z%ooj~ZT3F{B8QFX>|)=AxRpgp!MDkr=kT!KER6sts69r|_-RN4n@;`#02)ek7NW28 zMvWvD>_cD&2pzE3{p4PEb-Z#oxjxDfC>yxO_R2RC%P$umsT##A*uh}zq5sRGIwX#h((pK?wv-bYbQ9Hab1j$ zdYIj9vWJ@0d!l1(Z4=i2)R8W%admZtbZuX6Ti5xd)w?B)c9HHc zJrn|KFnO#*Nxl(M&-Kc3M`M@Mvw9A)f?~v<3m?UKoqX&~z!#{bn3GNC4SR;iOhM+% ztdy%TdeeCT#!*7n;(mxhzIBJhuH{O05fL1)A?3DZ^ZkDO65@2{O zG0S_}i!%c~0#;er?v`{;;FI*GQ$_Qr<)LsJ#jIV4sw#VweoF##{+9nIa<9D33$s8v zU512%TCs@BkgrJaWET+#7DG;mAMti+)8klH-+j$@8N*sYs?*x?cFO zsOC<}{9Qd{eOM3;sle*I^rZ_rrrk3+$E~0yu#W_W2mg(J{j4a(&b%o**57J5GMqa_ zws`a+iuU^)dD0m=mYN)82joiV*2Rs0>TAzy!<2d>^Qknhka$jiYh9JX3U~413MqVd zV}~L@AOWXybasYh6(*Mteivfi9xGyM9esOd<$dtE%%+lyJx(BDB*wJXuiSiWDK=hr z?EFaoY=#FNY>0d&qP4`Ce-^6DZ@l@PHtV+)%&i{na(GqBWa@&IJz4oj7s`)<#~Q7_ zodY)owlT*WENfrN$N}Dy2zgwjLXFB{?G#Q+0*MGB!(FS=8BKpTk2zmNN243R!yKLZ zfPR%+5%Its0DRZ0%e;E2ubo-W@@ZCqJimcW_pG^Fu5O#9eqD~NybkdU=6JRvowJ{) zrMoXP@KTo=|oxwx>$+hO~qcNHZ7IU!7oi zfQ+%h;83rQXGMnC*kV?#-i+gE!&P25yGjPFbix85*8prAvO8TdjU8qAWSh%s z5SQ-gv#=K;{@)RX1JGB<^?{>NuH*jF4z>mpzAU+U)vp`zT2f80n6yTH&gbDGBT+Clp>EJ&l*D}5od5v9>5=ViCH~gWXRuqLHOp)NWvSBRF1>}eq9`8V9(K!JhPrNkObrV0Eqq)$K}I^DPk^d>;M>@c10kv z!SLuDqNvTg&4g77nVIIBnrRHuc>kt?Cy4%c0<9(h@$OH85e3r1=a@hD>DN~l#dL4w za`Qzi4{o5tYU%qi4Bfx@O*X>A7fI2^&vRD=22)*|(A+^JUNG#l0T+>YOiBAy_jzwg z>&I3dtmX4F1pG0_Ra&bx%|hNBE>};QTDg*C`y-o)ZH`}qb*8wU8IOlS2Lj|PuMl2~ zUH>#*&E?nW}aWe$r?MFY+dswPi7&o7e^*%feFVP%X&us3Fd0`PM$nRSE zmz~r!&_WLbLlb~^^J4S4xd}ZS7lcDKi$;7rkyfhw|attEhe#w z{qd{XBODcY#k=3|2V}B%?eDYvD(5^HWo6f?iXAn-BpmWBD;8;~2l+=N)Q1?N{Vm-4 zWdtA(xvowMpXV_dp`uW;njI;$kkA%`^79)pn}oSyW)bbL!+C1Oem7;i@xL!uWM1v6 zK2`Ue9clYk1G}}*cWb;}bcZTurCCwOSb5xkx}tQ3+M6eS~c9p!Atj;N3*Mf z4!R+F%u_+QZ3fs73ss0Z_^feO11LE~>olu7#^R!!fEyp*$Y1{sBQsj@W`RLYm_D^h zHME;KdiQP&^zJ^BNYZ)%VxBh7Q_VG!89uke1nhE++53$bH}*Gdt9a~k5ZTn%D}Cgg zs7JkGJz<{J`?2;lyp9=_HgDYP@R@b0K6Mcv7dEr55mnHS#(D?FTnHOaGo=5$Rri3r zb-Di=4~`E&e^g+heiEMLH^~jx2M0`lsA8ER48`YTUR;U2mVBH^4ft2hvbbHpD@!9U znaKF1V61GEH{vo6MwE_&y&Juz2cY`l~YGN@lZcQ+3lhaz)k+Fx)h+D^p@a z7HF8~;deUkl>OOyJfHRc#fqbgS0JDn!c_E~a9KWk%#+HUlwH zS_tUjF@N5))vi&%+*bXA8-d*e7tkF`xv#}pahXjFF1};Qm&Y@qBIN z6q_bm0M4%ujRn|sL4}PHN%iva`V;*Hx1H}Kq(x>&SP;8U)Xdh{t$$M3(k^9rIh;4Z z_ovI3du;VgPv-0ZI;^tv<)e|m=rFo@g!zc;x8qExPsZWqwfoaMt@X)@TioK8pNw7{ zS$Dl$6^CIMzSn~{OL~p3UWnz3exNr;I!zEX3AXmdpv)+IQsCajm`_PYE1P1%n~X*4 zdbFS9p%$tj`Cv`)dU16_0=X1E;})|7-5lvvq)#ba+7^-ZdI{fquM4kUH*bE=NsQyj zh0+?E`G~l?T`cJEF9a_4&MRV;@C0v56aem1+?kE@RGAhcNO^ITy*nSy!`(^1&UxU# z*1hz_o!!L%l?bEu$d1c}T>hr)CnL_rsPP6{fIcyg5mD!CEoaH)eg9RQP?ouJaWH(wteb zEh`tXZ~WXm<`G0YyXIETxqP~c@VP1ddYGQf@7$9fZ7nxR#w_){LIOLkUo;JEC+5|^*((P9?>JPZlndg5@A z^~NmsQ)ew+p>i$Zi3;vHDARIvCT?`t+UhCjYQnDdv<*4^+@!OXR1lq2XdN4G&hiC! z-`40iB5E(yi1P7=Q zeOWDrObL05Hl$_474x*&HRRP1kI#kR8yUVUXsc$i`5MtDp64Xphr`K3;qh(1Zg5s@ zKJXJxyQ6ZU2)^^X6*R7>ZkzymOzGzApvAtHP8F}SX%@-&;E99ikX&IgY)M-wUwN)# zJrbox@;qA|jaO1T+=2bWqdbDv%?Jplsc|;?Z z_;WkjS$NLBD&QCH7P2SW((t?=%IQt{ym0@~Y#&Wgx>m??2x8KJdI*>3BIKuPA~hTE z$BsuaWa8Lw;;!%5Olybah zK}cqJUB7}0d7Oy#Rh}+I%w6wO$;~A?`1C(WXNqx~QRHLIH8fu#)cqkK1!>U6LNV49z{5?2-BJhanG@1SkFl5em~*4hx^>vj-oT3 zq$a?0n)x%_f0}j4{;nW&5uDvMCE|0#F4f?bOig7r{w#H|06RZ~)Cr}8PhLUF41)UV zz`{O{+^lm~urNl!#&SFJmAc6V1BrZ^?zZu7kOAQaj(X|Vb%%LzvQCOP^jj5&h#j(H zD`9OJyXTYxK&4+qh5Oz_QAS0nYCf8H zXJndPW1JM)+0@M>j=7Su0g+e~R6*^XcO0>YJUh@oX!T&2vG|8kAHkJq){GOz7+VBDXbfME84lE32t^7kem8oYFCTw$KJQLSF_Bro-TbCPYl0Mm zeit8=9uMH*GoUCn7fO-d$pB>*a%r7brq2SUmJLsg)}Ny4-2dT`5IKTKWzduMBHe@S zk>2I!(`a(igs~jT9gk7&%wq4`Lt4Sh3w?V-ZNYEde6tFPqdg=}m*;VRaJrxO@~x{ko&T3gu7jWl2^mmA6sM zw)U}2@H;HPAaHwp-oy9li+y*`3hMznKud^e%n=fAtd4PPb3Vv;a0Dq%Snuif0>0&I z9KB6n3;@*h8GkCCyhdni$6T7OdlLLmLQ8tw%1pPw^DKI-b-jtfs^o(&YK)vcCGe3VXDAa?h46hhixiPWc2s5)YeP=84K^0pTPOM#A zUvI2r61baPpsJT9CUtyA8wvWN_@Y|O~oD(#EBoxO{Y%`mYFJs z-dcoSUNf%#(srg^3Y#|#w&zp{HvYF~(+7H|o8{;Wcy>Y!_#9s9{ol!Y?5(B8A8rrc z^rv%n&}NMTCihZSa?arb)z+xwHV*T=a3+Phbp2?8+^+b2Y?W4K~g!8qwJ$( zNSBuiGDU^B0|a|(v^cwW7!l-hxWwtL#fP;uHoBIu#lEz9V{=$#^+Kvh|Eq_&#OQQZub?XuozZp31@b>5fk* zz!R}BdmFc1*e;1m@xIEj6aB(}1qX?%t821qzmE=XX}(onc7-}S@h21M)7X^MVY@cJGws#^hXG#SW~VTeon$avF7`Wsyp`yr4X?x z%4Ndbd-Za-%Y{vulKW&>A+N;h@Vfso9v`pyR#~@JV0lxS2J&fm-~3du+00d&~1NGJ3D5 zfB345-_2o$t# zTS45H=f8rd?4sC>Q42K6yB8lnGFPw0LyQ3|K;nsPhBivbD~{V^?GtgH>f2y7C#XD} z#MQ-(ET#|PV!TyKZ^mBD#Wtt3o;=KZ`tZA5kD&tk(jHO3r+*o+8*6fJj*HO?moEb zZlQG<5)mTDxJ)M*r!T1}Q^!}R$+D{E&U<^7M-&tq5f4rI3fE&J7y%&%u~LU~!T8tW z$({Ca>&uhx^Ex@%<+dUAGH7V$E@)B}sX_E!9=@mZz87(ZUjL#Yd`={RvBCOWe@fht zftX|6xiKnAuTm2tCwQHArV@XwS^k{J9~`T(RKRtaGc=dW#_<3}}Zw0c6EcMN;tHg`Jm`m$t_5A^2omNcHk z6>5d2@YtF8kYGDt=z5=Ww2P-~Qd>&!Tro6G%@fW?V(-88n3iU_JYF3LJX&R>GO5}g zojkEUd=d4ddqkeRRkQAQo^G)h0fG97{1#VEI#~$4x3~AI^r2Cms~TJ&$oVtwUxE6a zGf-BK%*N1KH385i7MEGv{YC>mF_eJt!>(XNObT#A=@IZC{jcr>6KMAdIQa!|qTE1)2682sb`L3U5}-fu!S0{YMk< z?_d6-kpC)@%JT3ZvXVQ=^2%!Rnpw8IoV{ZA!+U0`Uu<{aj)jPVyE8z1T|Y1J{&x)e zTfkBz3#dXyjbHm;1HzYXB|7w^1`UvK`9tZxk`=1@|YQn%|#3Yqne<#PQRtO`dmH+IZ=;3j{ zUuUPytEn4yTq}Zzpw7WSROcGif2tCZmd`?X=&qWCior zv;csU`1DZ8w>d|#LI7wb`9*5H|I^eF#)Pdy=Js2?hcxAuGB4P5#^=_jsE(e;r(8h8y?Rl8%6AKIAM1E8zgPjh zm2g<)3xLmdkv~(4*2$1~!9SiIu{ZE_>@%jk zbBSaPmZqK&JaW+ZYv)~6wQ~D7jgJv_QxXBstxS|k*wYGxknlZA$(Cea;#%I|hqMvt z%w}iG{}6uoO07&D&2-5x81TwYP~p#6k7WJSs`}9!l#loQK2zKK>vE1QI z3=)z6f>E=!6jpo%z|Z)QA^*SqbbVd|rz_+^z)(LjaJt6RYZ3bL$w6a@gespkGLeQa zuRHM-pFAuPKaP`(fXs;x)!{hwm)KwFua_vJ(XA460i|SN1`BK>BY~BDN-0rf_Cv?% z9%+_5+@KA~@~Xl0825(TDy64s`CCnoG!EZ?Y`&iW-=vjK^E4tBAXoHm94D$DxcSLz zW(f^Vt8!az@nwvlmOPVoJun)lN9xo-QY}hv)m$cpq~`FI#Mp#Up*W5wWJ8C00_mZO z&wMY=d_@Er+7i#0}+UDi+Je9(L|B<}J;Gcx=R`g#y7aTMHP>{0@ zc16rfn1|gwUI`!2J#0vqQ<=p@j90oGuq7)lvdq|h! zow`$}H$@N&kEP=Vlx;W4U@}ruE-3y9noYU5yBy}UJC%{h1|P^zN!PA&!BF&0{?-n^ z(XXK8ie*q0frJx(EO4;}dWIl;?oQD<^W2{(L1=_s5$?^Dz|fT%JY4yQ7Lm2;-EaWK zfCwOTR~DK*fRK9ANq%VrB*R`NL#3I#dap5o99Tdi(7YwjJ%S`hzJwnImo5ls{H4F2 zRu7ns<QKF4Dh9S91ln}iQGSP`q2E%BH z8WKbgqW96ujLtjn-sIlwVP242EwR5B8#fvj` zBKMcjR9Od%?|7I~+#%7znv+b7aXC9YX4eC1uRrV{?^Rbi8yI2Ahqj+Jp}#bo(ma3%hp>rFIA| z0=r9~f{Z(Ri}LJ<&^URRuu+Emrv`1QcfDbVNNOTb0U48s!?B(MFbeN*Uu;#4_)G6N zLW*DE<5bz)0X&JE6=}Dmxot|isN3P}edYOsU6Zwaxw(La!c6!4tNY5LHn$*uhoec? zY#5u+lWn$diCmWim$y6~Kc?19xzjT!bhDd7IZfVSTS_`j4j$7H$7i)u4F2%p18hjV9Iexn3p}F}uc8xEvequU|&L9?1KDpYfCN z-766UPz-fSLneG83dlJfLP+a96%O4&Y;^O$DdGh;o~wG606vx|wpJ_nJi5rFQ<0v6 zQX;Fzs_n-$F2#isbkjGLJKfdmgUNJmSa3NVCoD};)8E0kaxd>`B%6rQ4Xiiv92Hex zVSO>-;p{%%WBJ9-7wt#LXPrtZqOcs-A}}+I2M5~~wv5g&q-Exk0FrSn^uP7&Lrav- z&>B_fAe-+vKukB<(si<*v^&~L#|k|4XP)CV9a^^lE6et$QR3BiWh1t|-O;$SyU>-zm49iLkO+*EZYx zRM4N&UeAG%wcUaFkz^(^9y}L$THD0)W~+su26C&f)+ltV#rYA()h;q!ezbiKb)(pQ zoR5uQ&>U7-%qXzbXM3mBWxG|gV^fE|8sC+C%3PR;a~hA?g~zW?q9Gk|?d1jCg{wf0 z63bbcT=%t>(g|rl1<#MBn(^%2$a&vm3B4lYhtN`%605exP=hDK0yPC~l0rc~;2si# ztk;_bVvGm8g7_`JFHQ(?uk?y(*B4uK*K2w7tP>j3`uTNaa@lo#E=gpKNBFq?Mgsqh zC~~R`S)}zkkfJ9ba^f-OHQ?QKRb2~h0DFnVz77;rPG^;TK-glIrA_m(;yjY&rC1>=|c>3 zyFxgj>iBVKL6@>|HppLrNnk564{-SJ0>wkRIxB^TE0fNR%`^lZAFT#K{m*pN(fJC~ z8&nz38?OW`fI!d-8Fy_8v~&BHPu#lPq}3g0=Z{+!GOpSTgbMddiyHyC?zfi_+PjM< z{+UZQTwHtrJoFExjFUrMJxzsCc5^xBsI(uOzM2|&{xbGi1FCdRam$2g>MQ-uN;rRn z6JK=9e!cUlf>q=uRe0a@dUJR2byj}I14$M6xWYiZ{lwNKm;g%HNjxZ6cQ*`Y2u|Kg zYSb!_Giei$RY0FYM|hm!mTSXTShkeNDE_*Bs*)*>`F+%Vs1-@=L7Zd_8)D}kI*4VS zWXEu@ob|n7hIf6!1{ZR+<6flFb>&`>9(!B=$bqDpUGhdq$IvBREbyQ>QCNHXc_$x` zhh7f<%I2hxLEWRbzxD9j3HhN7XKFLHT^!^$u$#NRkpD8ZGC06WY#OMXd(7Ra%vKE%jpjG!USM*WNgC$8LIl)W4*_j?!B^ir-+z35IvK-QG zD(Tx%TM$Ku`SYdmpL`uC5QV31TLxv0hCi4H;}td9T4{^QY1@raT)Ddl-)9?>QG#`c zJ2^ns#T9|sIv~>-;kDMw&%}W0{6gGmsdBy8&-?iK64!nA(tiD`r!h5M_E5RLuyu#iZ1iMzcoQVb5@rU`6hkIuNp=oGKZ7?`a0_Uw;m+36lQezSGU zV`5^uc!X)kzZTo^Y8}E{BzS3sKw5vc@Hs&HCIolemimv#K9lzE(em{NEgb@HV3l@n zGW5>8*yL<(U>K%-nrqOZm@yIcq4>Mj#J$9qi``TC)gY?ZTz`ud98&nfqYNBc>j z49l}v(kDsdC$Xe!M$O|I(T&Iv{-`sjLl90YmA%ThA@jYM4c0~#1?YS}mn}6Bh_&@h z-v7fUb_%5R7+nj%=@UkCqrTC}BA=%4h?rKrd#)iCn!74n85`9tuvK5*i)n3v4h$5$ zSOBL58lF$Y_1lY@e`66?#@cr3>&rAep6A3pWp;%>&e7i$ zOCF@FG0EH3fBlIdvBRB|Y>ut=9}+g}TpO*CV!Xmnxi*II%7?Dv^&fhmo%Yeq1uo2Y z%WOKI96n&^hyltHv(6l!`vNl)j2C)YMsM-zi*mH?e%V~sBG+Aa-U_?XM@S_aZxTBD z5AH zfR<{C{_?(j{q4&5MFldQyA$yq6pFz@+{oEQrY5)6!Q)#B^+uxVeO}{H$m93z#vcr^ zx8sI$%e7BTA3q3-f;&mSYr)k5hiBaPAK4hP&^Jix$}okfRc?DFAzI0&D1Pl?rB6Z> z*Zap_OB3B=bkLZ`)*D?K7x+E1g5&X5zzfr-zACbj!kL|lU70^r8J=omGsOb&_3Q?r zTSBS0?w*OBE>GL&c{jslJwC4(n4}YazCAF zkW6<2YvWcx#;%&L93{vMxY7YFxiZH;9Mfz2RduO_>T5YPdG=U* zDc!kcDxxpEpsx?)8f+5)T1Y36Nm2gN zc6%RM-M7=LaaMX@jx_FmgO7&yS=v(d8{)kCAMT^M7{1mm;=K(7)@hP&8?f+nVHZ*; zJ_x4_GhJG@8Vo}DuqhCT?&$GcXLCYtML4v74ZippLfD@Qx%U;|kV(o?;r-jU^1K^P z&RW!cnki3YX12sbhIY}T4ux6%YAM1RtL9zXWp$QW#U}#juERd^j?`;p1-n^vc}`<^ zZ4nFm;s)65l2y-~u~`NcIgn7SeaLRNLBR{-mlc9m@S@auleGspL5KAbCUn=j=V2sA z@I**D7b)xeA3P3}bs{a=-B>S7w->RrGvSon=>g8iB_5)Pt5s-e8;^ZJD*CA^m9TuP zdw-$PYn69x4GvG^DUxJ$U{X$YW0hDNmDMiX^be`Fbw*WDoxM)>=QZhjmXXk9n^Iun zUJ0=^gdK7uqKAAmi*M-nX0C3*f+0il*#c-xxPv;nEAmU#H4y!0610Y-Z)H7&(^>JF zZ?+gZhm?b)JF{|s_T4^6DZ+GI?M5CQAKL|O=y$5I6Yy11uG6C`N+u%EZ5HpY!v3t4I9 zEfkAJxE-d>Cn&Tw1WGWaHX>}kfGy!;RUSwiD<8qe%43fCbWvW^Uv3BRT@?g)9wv8k z)4@;`beHq`UZ{&5{wsY|inzTaQF&SNg;H!i>ee>9h_Q8`oe5hRO6uHQP(`s3RPL~6 zc}Y3V%AH|v&&tSt%fP%{YRso@76nLmf6z3-|DJvM03!pZjEYg2b;9$B3j4vBUE+q- z3U~SpdKr;e%_zHTr8TFR=>0c;VVC3j>MbuI1bBGVf&CX?XWFI#VG ziROnR;5|`|{I7QTupUa-oX**z$TV5))03Rzm7|EGk3Q2IaK+$b-rY!9^}J;y`479) zxsWrYX+@inr_$#E`dBoD=oUWftDl2%`B~3zn)#16cg6Q9s~1uri0*w}UNl6Y9HZ}x zcIIq}p^{{t!9*BVVLtAg*W9A^M9h2K@u|bmrTS}f0Mt~LrfPOgvLLK~4{1CQ$2k`D zG;wxfO>s7@rLD^Ie<9Mq6P||l6TibACnh&dtrc{dyaCKo)o$g^+gM@4D*B;;*t=8< za%Oqhk_+-~hCUg#XP9{#i{*XyAjS45tery03v417CBx^8#W|CV*H^OWJjRR7jHK3k z+xk!HNa8NvuMZcUl)m>!9TeY5W>GX5|1Qnr70xDPEf3J37(jvPh}Z0Dk?~l0!5ZZ| zGq3rGR~l%bWffp9c67u0?w3Wx3yU}&{Xk@3pLc&CNN8{p3#nUaI%(>Ryy!e4arHWm z3ndG3U@oqVT{^* zCDPi1vlNkSV_Vppto1330X&uUV+Muy42YC#&85;nsi5Bl?RMhwK(WYljTeZ-hC!v~ zR|-bSdah^5RcrF#9E0Ux2O42)5O{}Ty5BKS*q@^(V1eNT4R@N{ zF-N*j`i&9^{qd!>)hMTfu0dL^T`nc`jcZqP>!;zeUhp+Yw~?~hs=$JRp*RDh-xksZ zT9+Z_RcY~|Yd7t7f3=X`Rf_Idg*uge}LpBmK_ zF16Ma67`Oa_Q>@XI;-2v>to*Xw%?aY?u-1>Z6-Mliy{Ks{;CT#PNI$esT?xyjE-Gj zSD76eOsoR+W<|Y?^AcZFhusakMBtYX4gY{x7=+*>hWWJe2l+>(WFF+fthxZ>>%Gg_ zzf}zzplX~xqkLr43Lwr#FfvNLHLx}VGIO8?)EoUqh(`Hw7^K*6T8I`SALnL^i1*Cc zOGr4r!~dDYjE`mp3`b!m`udIpiI(np2j~)sv^B4roPM+)XxwmBu*o@JPT?HRNi*ZT zSP*i?LAY&mc7UI2!L{rn0hQbKX5N9#+Ft>Fqp59E0yH*L#n*O#19bAvKwP`NqNS_i6!Yjggdl4>Lddh}wb2z0(yJZnK&YAgwIVNoVLPBg#3L2$T=2WGV$8Kk1eK zzD<>7H8p54=UCB{z>%=|lOt`t&-UBtMazg#m!9G1Wc0+oB&knXU z9=6}=D5yfO{?gfGXN9@R&}+;e^Km^{v_y@|WjY!2usoGlVa$(ItS<$vTvH!fGc9=y z=%vGXVdYgqh`?8^pY8$T_ z7QopYCU7r~CP^sZ6P!(z+4C~iV;5B345 zN_LHVn?4D03qs_8$yq_$-D(MdFGn}pzYp1=&474UT39+G3I{)z33=+YiFUB4*MfWq z{dTRMlzQn_gE)5R@et+|TrVImmufsUv>W2zzkE|#;Uo!CYDzgAG2-PMF64hcNe+H@ zfcm3_L`c=vsw~cKzt_eyjmoWdA1FT2RhlEiN=Ltgi0I~=_rp5oUo+9+U^&>|?+IR) z?2rjP-jLI0;{d`%7YK9=$Bli!nVjzRQ70>6_9GwjjbK0kc87}zejo1VeBjA~cbf|{ zx~wXEM2O5y3=_XokZ#1xTUQAScFrE3)vd(3YDqdTXkZMkyHI3nW(@E)fojXZ)8u+< z%$*TOFoD;+Cs8KB9-+Al>7sZ3WhS5isrHpA7efz7wE5ori5dvj-47y=d4(VUE0~b+idy!;as)zSfYb zRt?>l3b#ye9e8GR-R(tLNy!}6rRT5&$emOHKV=?gmLR{4G#0dkHbcQn*Yw zJP13;3T5H5hEtcmpN%4C7dg=gdB6}lFaz=o`CM29z&6L6_3y@vHFJ{8(th0Zzie@v ziG}4sjY@_Z(|*?_mTvU)?I#f6G>5r+Z^GIAqq(Pl4m60Re;#-#b$4R_!Q%_1AwWR< z{>Xk)B!wcX+Gi!SBID7DZuh&)>o(r`jHUaCl~vfzknSOphuJ|ae^+!j<_YcGulUR- zEa2A3e?8?ILbwIVD8A2LJh{2%WnAOWzbaets5u2`&#GEia5}o(pzr_a!_{PZvamc= zeiYJk5#Bb-YE3yRO5CuH<<##KuM`sjqBQMoiFtdz0_uv^1nKPMl{=8^xF zn`CE0fgpoc1mjvN)8kNx!G)#BDQ~V~w}PCm^|nVngu2+p@52`?TaHEaE~v6IyF3MC z)ufE`U~3qjZsJ0Ur|=oSZls&ZIM$YdxZEdMJpkeS?GKYt#AuQ!%MX8nuF!Td5;Wc! ze7|Y{&p2WI{_x{$O0AgUM3aKqibcbzlC|vn?lR>2{8hiHW;u>UJ)D$Lrrw_ke(#00BAB zq_ab=2>=1j+m}?c%@MlLM=G4?LR@#DiPS&O{`I3zbZTVE$3ecUk&5NmApFeD`)y|+IWKhO+;4yJcL*5hf`f(I2zV?uh%V^<@7Ufi#$F%(?}oQ4 zEf_NNiDiSoocyns1ix(dfMpt`yqa{^0s{B@qpNWMxUUTCgxx3XyInqEY}(?V)jt=_si^aL+u=KyY&+`s}_R-`dp8gSjCGLp?7J z`||Vu*}=wZrpbYw8$sK;IT4q6w?;JauFI7s)W9Stu?~PQNDv(KuVH!Uf5b%hdChqC z1;;f9d^-Ml-XE}5yS zstUPCM3j$y8}kTbB*~it| zT62m$VC{dh9+<5XhzyPC`y~CJJpXg?c_#rfIK-R`PxY^1e$P4$Xakck{Lje%<4sxs x<_;(F%;LXx+uw`C9ccUi$^9oi|IeJ;P;A1ljOH0LY>@#UwTEC8jPkSB{{>1}pBexF literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 000000000..bec8d0839 --- /dev/null +++ b/index.html @@ -0,0 +1,1228 @@ + + + + + + + + + + + + + + + + + + + + + + + + Getting Started - Instructor (openai_function_call) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + +
      + + + + + + + +
      + +
      + + + + +
      +
      + + + +
      +
      +
      + + + + + + +
      +
      +
      + + + + + + + +
      +
      + + + + + + + +

      Instructor (openai_function_call)

      +
      +

      Renaming from openai_function_call

      +

      This library used to be called openai_function_call simply change the import and you should be good to go!

      +
      find /path/to/dir -type f -exec sed -i 's/openai_function_call/instructor/g' {} \;
      +
      +
      +

      Structured extraction in Python, powered by OpenAI's function calling api, designed for simplicity, transparency, and control.

      +
      +

      This library is built to interact with openai's function call api from python code, with python structs / objects. It's designed to be intuitive, easy to use, but give great visibily in how we call openai.

      +

      The approach of combining a human prompt and a "response schema" is not necessarily unique; however, it shows great promise. As we have been concentrating on translating user intent into structured data, we have discovered that Python with Pydantic is exceptionally well-suited for this task.

      +

      OpenAISchema is based on Python type annotations, and powered by Pydantic.

      +

      The key features are:

      +
        +
      • Intuitive to write: Great support for editors, completions. Spend less time debugging.
      • +
      • Writing prompts as code: Collocate docstrings and descriptions as part of your prompting.
      • +
      • Extensible: Bring your own kitchen sink without being weighted down by abstractions.
      • +
      +

      Structured Extraction with openai

      +

      Welcome to the Quick Start Guide for OpenAI Function Call. This guide will walk you through the installation process and provide examples demonstrating the usage of function calls and schemas with OpenAI and Pydantic.

      +

      Requirements

      +

      This library depends on Pydantic and OpenAI that's all.

      +

      Installation

      +

      To get started with OpenAI Function Call, you need to install it using pip. Run the following command in your terminal:

      +
      +

      Note

      +

      Ensure you have Python version 3.9 or above.

      +
      +
      $ pip install instructor
      +
      +

      Quick Start with Patching ChatCompletion

      +

      To simplify your work with OpenAI models and streamline the extraction of Pydantic objects from prompts, we offer a patching mechanism for the `ChatCompletion`` class. Here's a step-by-step guide:

      +

      Step 1: Import and Patch the Module

      +

      First, import the required libraries and apply the patch function to the OpenAI module. This exposes new functionality with the response_model parameter.

      +
      import openai
      +from pydantic import BaseModel
      +from instructor import patch
      +
      +patch()
      +
      +

      Step 2: Define the Pydantic Model

      +

      Create a Pydantic model to define the structure of the data you want to extract. This model will map directly to the information in the prompt.

      +
      class UserDetail(BaseModel):
      +    name: str
      +    age: int
      +
      +

      Step 3: Extract Data with ChatCompletion

      +

      Use the openai.ChatCompletion.create method to send a prompt and extract the data into the Pydantic object. The response_model parameter specifies the Pydantic model to use for extraction.

      +
      user: UserDetail = openai.ChatCompletion.create(
      +    model="gpt-3.5-turbo",
      +    response_model=UserDetail,
      +    messages=[
      +        {"role": "user", "content": "Extract Jason is 25 years old"},
      +    ]
      +)
      +
      +

      Step 4: Validate the Extracted Data

      +

      You can then validate the extracted data by asserting the expected values. By adding the type things you also get a bunch of nice benefits with your IDE like spell check and auto complete!

      +
      assert user.name == "Jason"
      +assert user.age == 25
      +
      +

      Introduction to OpenAISchema

      +

      If you want more control than just passing a single class we can use the OpenAISchema which extends BaseModel.

      +

      This quick start guide contains the follow sections:

      +
        +
      1. Defining a schema
      2. +
      3. Adding Additional Prompting
      4. +
      5. Calling the ChatCompletion
      6. +
      7. Deserializing back to the instance
      8. +
      +

      OpenAI Function Call allows you to leverage OpenAI's powerful language models for function calls and schema extraction. This guide provides a quick start for using OpenAI Function Call.

      +

      Section 1: Defining a Schema

      +

      To begin, let's define a schema using OpenAI Function Call. A schema describes the structure of the input and output data for a function. In this example, we'll define a simple schema for a User object:

      +
      from instructor import OpenAISchema
      +
      +class UserDetails(OpenAISchema):
      +    name: str
      +    age: int
      +
      +

      In this schema, we define a UserDetails class that extends OpenAISchema. We declare two fields, name and age, of type str and int respectively.

      +

      Section 2: Adding Additional Prompting

      +

      To enhance the performance of the OpenAI language model, you can add additional prompting in the form of docstrings and field descriptions. They can provide context and guide the model on how to process the data.

      +

      !!! note Using patch + these docstrings and fields descriptions are powered by pydantic.BaseModel so they'll work via the patching approach as well.

      +
      from instructor import OpenAISchema
      +from pydantic import Field
      +
      +class UserDetails(OpenAISchema):
      +    "Correctly extracted user information"
      +    name: str = Field(..., description="User's full name")
      +    age: int
      +
      +

      In this updated schema, we use the Field class from pydantic to add descriptions to the name field. The description provides information about the field, giving even more context to the language model.

      +
      +

      Code, schema, and prompt

      +

      We can run openai_schema to see exactly what the API will see, notice how the docstrings, attributes, types, and field descriptions are now part of the schema. This describes on this library's core philosophies.

      +
      class UserDetails(OpenAISchema):
      +    "Correctly extracted user information"
      +    name: str = Field(..., description="User's full name")
      +    age: int
      +
      +UserDetails.openai_schema
      +
      +
      {
      +"name": "UserDetails",
      +"description": "Correctly extracted user information",
      +"parameters": {
      +    "type": "object",
      +    "properties": {
      +    "name": {
      +        "description": "User's full name",
      +        "type": "string"
      +    },
      +    "age": {
      +        "type": "integer"
      +    }
      +    },
      +    "required": [
      +    "age",
      +    "name"
      +    ]
      +}
      +}
      +
      +
      +

      Section 3: Calling the ChatCompletion

      +

      With the schema defined, let's proceed with calling the ChatCompletion API using the defined schema and messages.

      +
      from instructor import OpenAISchema
      +from pydantic import Field
      +
      +class UserDetails(OpenAISchema):
      +    "Correctly extracted user information"
      +    name: str = Field(..., description="User's full name")
      +    age: int
      +
      +completion = openai.ChatCompletion.create(
      +    model="gpt-3.5-turbo-0613",
      +    functions=[UserDetails.openai_schema],
      +    function_call={"name": UserDetails.openai_schema["name"]},
      +    messages=[
      +        {"role": "system", "content": "Extract user details from my requests"},
      +        {"role": "user", "content": "My name is John Doe and I'm 30 years old."},
      +    ],
      +)
      +
      +

      In this example, we make a call to the ChatCompletion API by providing the model name (gpt-3.5-turbo-0613) and a list of messages. The messages consist of a system message and a user message. The system message sets the context by requesting user details, while the user message provides the input with the user's name and age.

      +

      Note that we have omitted the additional parameters that can be included in the API request, such as temperature, max_tokens, and n. These parameters can be customized according to your requirements.

      +

      Section 4: Deserializing Back to the Instance

      +

      To deserialize the response from the ChatCompletion API back into an instance of the UserDetails class, we can use the from_response method.

      +
      user = UserDetails.from_response(completion)
      +print(user.name)  # Output: John Doe
      +print(user.age)   # Output: 30
      +
      +

      By calling UserDetails.from_response, we create an instance of the UserDetails class using the response from the API call. Subsequently, we can access the extracted user details through the name and age attributes of the user object.

      +

      IDE Support

      +

      Everything is designed for you to get the best developer experience possible, with the best editor support.

      +

      Including autocompletion:

      +

      autocomplete

      +

      And even inline errors

      +

      errors

      +

      OpenAI Schema and Pydantic

      +

      This quick start guide provided you with a basic understanding of how to use OpenAI Function Call for schema extraction and function calls. You can now explore more advanced use cases and creative applications of this library.

      +

      Since UserDetails is a OpenAISchems and a pydantic.BaseModel you can use inheritance and nesting to create more complex emails while avoiding code duplication

      +
      class UserDetails(OpenAISchema):
      +    name: str = Field(..., description="User's full name")
      +    age: int
      +
      +class UserWithAddress(UserDetails):
      +    address: str 
      +
      +class UserWithFriends(UserDetails):
      +    best_friend: UserDetails
      +    friends: List[UserDetails]
      +
      +

      If you have any questions, feel free to leave an issue or reach out to the library's author on Twitter. For a more comprehensive solution with additional features, consider checking out MarvinAI.

      +

      To see more examples of how we can create interesting models check out some examples.

      +

      License

      +

      This project is licensed under ther terms of the MIT License.

      + + + + + + + + +
      +
      + + +
      + +
      + + + +
      +
      +
      +
      + + + + + + + + + \ No newline at end of file diff --git a/multitask/index.html b/multitask/index.html new file mode 100644 index 000000000..c3ad20f60 --- /dev/null +++ b/multitask/index.html @@ -0,0 +1,928 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + MultiTask - Instructor (openai_function_call) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + +
      + + + + + + + +
      + +
      + + + + +
      +
      + + + +
      +
      +
      + + + + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      + + + + + + + +

      Patterns for Multiple Extraction

      +

      A common use case of structured extraction is defining a single schema class and then making another schema to create a list to do multiple extraction

      +
      class User(OpenAISchema):
      +    name: str
      +    age: int
      +
      +class Users(OpenAISchema):
      +    users: List[User]
      +
      +

      Defining a task and creating a list of classes is a common enough pattern that we define a helper function MultiTask It procides a function to dynamically create a new class that:

      +
        +
      1. Dynamic docstrings and class name baed on the task
      2. +
      3. Helper method to support streaming by collectin function_call tokens until a object back out.
      4. +
      +

      Extracting Tasks

      +

      By using multitask you get a very convient class with prompts and names automatically defined. You get from_response just like any other OpenAISchema you're able to extract the list of objects data you want with MultTask.tasks.

      +
      from instructor import OpenAISchema, MultiTask
      +
      +class User(OpenAISchema):
      +    name: str
      +    age: int
      +
      +
      +MultiUser = MultiTask(User)
      +
      +completion = openai.ChatCompletion.create(
      +    model="gpt-4-0613",
      +    temperature=0.1,
      +    stream=False,
      +    functions=[MultiUser.openai_schema],
      +    function_call={"name": MultiUser.openai_schema["name"]},
      +    messages=[
      +        {
      +            "role": "user",
      +            "content": f"Consider the data below: Jason is 10 and John is 30",
      +        },
      +    ],
      +    max_tokens=1000,
      +)
      +MultiUser.from_response(completion)
      +
      +
      {"tasks": [
      +    {"name": "Jason", "age": 10},
      +    {"name": "John", "age": 30}
      +]}
      +
      +

      Streaming Tasks

      +

      Since a MultiTask(T) is well contrained to tasks: List[T] we can make assuptions on how tokens are used and provide a helper method that allows you generate tasks as the the tokens are streamed in

      +
      +

      Why would we want this?

      +

      While gpt-3.5-turbo is quite fast gpt-4 will take a while if there are many objects or if each object schema is complex. If 10 entities are created and takes 100ms to complete it would mean that it would take 1 second before we had access to our objects. With streaming you'd get the first object in 100ms a 10x percieved improvement in latency! While this may not make sense for more usecases if we were dynamitcally building UI based on entities, streaming entities 1 by 1 could improve the user experience dramatically.

      +
      +

      Lets look at an example in action with the same class

      +
      MultiUser = MultiTask(User)
      +
      +completion = openai.ChatCompletion.create(
      +    model="gpt-4-0613",
      +    temperature=0.1,
      +    stream=True,
      +    functions=[MultiUser.openai_schema],
      +    function_call={"name": MultiUser.openai_schema["name"]},
      +    messages=[
      +        {
      +            "role": "system",
      +            "content": "You are a perfect entity extraction system",
      +        },
      +        {
      +            "role": "user",
      +            "content": (
      +                f"Consider the data below:\n{input}"
      +                "Correctly segment it into entitites"
      +                "Make sure the JSON is correct"
      +            ),
      +        },
      +    ],
      +    max_tokens=1000,
      +)
      +
      +for user in MultiUser.from_streaming_response(completion):
      +    assert isinstance(user, User)
      +    print(user)
      +
      +>>> name="Jason" "age"=10
      +>>> name="John" "age"=10
      +
      +
      +

      How??

      +

      Consider this incomplete json string.

      +
      {"tasks": [{"name": "Jason", "age": 10}
      +
      +

      Notice how, while this isn't valid json, we know that one complete User object was generated so we yield that object to be used elsewhere as soon as possible.

      +
      +

      This streaming is still a prototype, but should work quite well for simple schemas.

      + + + + + + + + +
      +
      + + +
      + +
      + + + +
      +
      +
      +
      + + + + + + + + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..fdbca8c93e17a46e30396411c9831b51927bbf8a GIT binary patch literal 472 zcmV;}0Vn<=AX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkOZgX^U zbz^jIav&&gaAj^`XVQg$E3L_v^WpZMd?av*PJAarPHb0B7EY-J#6b0A}HZE$jBb8}^6Aa!$TZf78RY-wUH3V7PB zl|65RFc60K{tBdajjOKRsti?zC{m%bbu|~T;t%ArRq^i&A)$a$r5F};$nX1b9~?+S z-UZ>UV>v0NgYwb?osz14)iw_bla~Z4$@`P%$ERfTAph{OeH&#L!Z8@(r8WOz2&*fF zXZi5qq6EMBJ-cIN+eW?}k%R)Gr66|t23Jta1Ml5p9Ou??KIzdiBnXG#aaCqCQX>%* zNbCy;XU}uwX8Z1L?ksOYKCFrdU4!^~`k?8vG>2nW+EA2!aYihy$)kP`GDjs%mtyS5 zCeU4urdiv1MdV=RvRX8fK + + + + + + + + + + + + + + + + + + + + + + + + OpenAISchema - Instructor (openai_function_call) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + +
      + + + + + + + +
      + +
      + + + + +
      +
      + + + +
      +
      +
      + + + + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      + + + + + + + +

      OpenAI Schema

      +

      The OpenAISchema is an extension of Pydantic.BaseModel that offers a minimally invasive way to define schemas for OpenAI completions. It provides two main methods: openai_schema to generate the correct schema and from_response to create an instance of the class from the completion result.

      +

      Prompt Placement

      +

      Our philosophy is to keep prompts close to the code. This is achieved by using docstrings and field descriptions to provide prompts and descriptions for your schema fields.

      +

      Structured Extraction

      +

      You can directly use the OpenAISchema class in your openai API create calls by passing in the openai_schema class property and extracting the class out using the from_response method. This style of usage provides full control over configuration and prompting.

      +
      import openai
      +from instructor import OpenAISchema
      +from pydantic import Field
      +
      +class UserDetails(OpenAISchema):
      +    """Details of a user"""
      +    name: str = Field(..., description="User's full name")
      +    age: int
      +
      +completion = openai.ChatCompletion.create(
      +    model="gpt-3.5-turbo-0613",
      +    functions=[UserDetails.openai_schema],
      +    function_call={"name": UserDetails.openai_schema["name"]},
      +    messages=[
      +        {"role": "system", "content": "Extract user details from my requests"},
      +        {"role": "user", "content": "My name is John Doe and I'm 30 years old."},
      +    ],
      +)
      +
      +user_details = UserDetails.from_response(completion)
      +print(user_details)  # UserDetails(name='John Doe', age=30)
      +
      +

      You can also use the @openai_schema decorator to decorate BaseModels, but you may lose some type hinting as a result.

      +
      import openai
      +from instructor import openai_schema
      +from pydantic import Field, BaseModel
      +
      +@openai_schema
      +class UserDetails(BaseModel):
      +    """Details of a user"""
      +    name: str = Field(..., description="User's full name")
      +    age: int
      +
      +

      Code Reference

      +

      For more information about the code, including the complete API reference, please refer to the instructor documentation.

      + + +
      + + + +
      + + + +
      + + + + + + + + +
      + + + +

      + OpenAISchema + + +

      + + +
      +

      + Bases: BaseModel

      + + +
      + Source code in instructor/function_calls.py +
      class OpenAISchema(BaseModel):
      +    @classmethod
      +    @property
      +    def openai_schema(cls):
      +        """
      +        Return the schema in the format of OpenAI's schema as jsonschema
      +
      +        Note:
      +            Its important to add a docstring to describe how to best use this class, it will be included in the description attribute and be part of the prompt.
      +
      +        Returns:
      +            model_json_schema (dict): A dictionary in the format of OpenAI's schema as jsonschema
      +        """
      +        schema = cls.model_json_schema()
      +        parameters = {
      +            k: v for k, v in schema.items() if k not in ("title", "description")
      +        }
      +        parameters["required"] = sorted(
      +            k for k, v in parameters["properties"].items() if not "default" in v
      +        )
      +
      +        if "description" not in schema:
      +            schema[
      +                "description"
      +            ] = f"Correctly extracted `{cls.__name__}` with all the required parameters with correct types"
      +
      +        _remove_a_key(parameters, "additionalProperties")
      +        _remove_a_key(parameters, "title")
      +        return {
      +            "name": schema["title"],
      +            "description": schema["description"],
      +            "parameters": parameters,
      +        }
      +
      +    @classmethod
      +    def from_response(cls, completion, throw_error=True):
      +        """Execute the function from the response of an openai chat completion
      +
      +        Parameters:
      +            completion (openai.ChatCompletion): The response from an openai chat completion
      +            throw_error (bool): Whether to throw an error if the function call is not detected
      +
      +        Returns:
      +            cls (OpenAISchema): An instance of the class
      +        """
      +        message = completion['choices'][0]['message']
      +
      +        if throw_error:
      +            assert "function_call" in message, "No function call detected"
      +            assert (
      +                message["function_call"]["name"] == cls.openai_schema["name"]
      +            ), "Function name does not match"
      +
      +        function_call = message["function_call"]
      +        arguments = json.loads(function_call["arguments"], strict=False)
      +        return cls(**arguments)
      +
      +
      + + + +
      + + + + + + + +
      + + + +

      +openai_schema + + + classmethod + property + + +

      + + +
      + +

      Return the schema in the format of OpenAI's schema as jsonschema

      + +
      + Note +

      Its important to add a docstring to describe how to best use this class, it will be included in the description attribute and be part of the prompt.

      +
      + + +

      Returns:

      + + + + + + + + + + + + + +
      Name TypeDescription
      model_json_schema + dict + +
      +

      A dictionary in the format of OpenAI's schema as jsonschema

      +
      +
      +
      + +
      + + + + +
      + + + +

      +from_response(completion, throw_error=True) + + + classmethod + + +

      + + +
      + +

      Execute the function from the response of an openai chat completion

      + + + +

      Parameters:

      + + + + + + + + + + + + + + + + + + + + + + + +
      NameTypeDescriptionDefault
      completion + ChatCompletion + +
      +

      The response from an openai chat completion

      +
      +
      + required +
      throw_error + bool + +
      +

      Whether to throw an error if the function call is not detected

      +
      +
      + True +
      + + + +

      Returns:

      + + + + + + + + + + + + + +
      Name TypeDescription
      cls + OpenAISchema + +
      +

      An instance of the class

      +
      +
      + +
      + Source code in instructor/function_calls.py +
      @classmethod
      +def from_response(cls, completion, throw_error=True):
      +    """Execute the function from the response of an openai chat completion
      +
      +    Parameters:
      +        completion (openai.ChatCompletion): The response from an openai chat completion
      +        throw_error (bool): Whether to throw an error if the function call is not detected
      +
      +    Returns:
      +        cls (OpenAISchema): An instance of the class
      +    """
      +    message = completion['choices'][0]['message']
      +
      +    if throw_error:
      +        assert "function_call" in message, "No function call detected"
      +        assert (
      +            message["function_call"]["name"] == cls.openai_schema["name"]
      +        ), "Function name does not match"
      +
      +    function_call = message["function_call"]
      +    arguments = json.loads(function_call["arguments"], strict=False)
      +    return cls(**arguments)
      +
      +
      +
      + +
      + + + +
      + +
      + +
      + +
      + + + +

      + openai_function + + +

      + + +
      + + +

      Decorator to convert a function into an OpenAI function.

      +

      This decorator will convert a function into an OpenAI function. The +function will be validated using pydantic and the schema will be +generated from the function signature.

      + +
      + Example +
      @openai_function
      +def sum(a: int, b: int) -> int:
      +    return a + b
      +
      +completion = openai.ChatCompletion.create(
      +    ...
      +    messages=[{
      +        "content": "What is 1 + 1?",
      +        "role": "user"
      +    }]
      +)
      +sum.from_response(completion)
      +# 2
      +
      +
      +
      + Source code in instructor/function_calls.py +
      class openai_function:
      +    """
      +    Decorator to convert a function into an OpenAI function.
      +
      +    This decorator will convert a function into an OpenAI function. The
      +    function will be validated using pydantic and the schema will be
      +    generated from the function signature.
      +
      +    Example:
      +        ```python
      +        @openai_function
      +        def sum(a: int, b: int) -> int:
      +            return a + b
      +
      +        completion = openai.ChatCompletion.create(
      +            ...
      +            messages=[{
      +                "content": "What is 1 + 1?",
      +                "role": "user"
      +            }]
      +        )
      +        sum.from_response(completion)
      +        # 2
      +        ```
      +    """
      +
      +    def __init__(self, func: Callable) -> None:
      +        self.func = func
      +        self.validate_func = validate_arguments(func)
      +        parameters = self.validate_func.model.model_json_schema()
      +        parameters["properties"] = {
      +            k: v
      +            for k, v in parameters["properties"].items()
      +            if k not in ("v__duplicate_kwargs", "args", "kwargs")
      +        }
      +        parameters["required"] = sorted(
      +            k for k, v in parameters["properties"].items() if not "default" in v
      +        )
      +        _remove_a_key(parameters, "additionalProperties")
      +        _remove_a_key(parameters, "title")
      +        self.openai_schema = {
      +            "name": self.func.__name__,
      +            "description": self.func.__doc__,
      +            "parameters": parameters,
      +        }
      +        self.model = self.validate_func.model
      +
      +    def __call__(self, *args: Any, **kwargs: Any) -> Any:
      +        @wraps(self.func)
      +        def wrapper(*args, **kwargs):
      +            return self.validate_func(*args, **kwargs)
      +
      +        return wrapper(*args, **kwargs)
      +
      +    def from_response(self, completion, throw_error=True):
      +        """
      +        Parse the response from OpenAI's API and return the function call
      +
      +        Parameters:
      +            completion (openai.ChatCompletion): The response from OpenAI's API
      +            throw_error (bool): Whether to throw an error if the response does not contain a function call
      +
      +        Returns:
      +            result (any): result of the function call
      +        """
      +        message = completion['choices'][0]['message']
      +
      +        if throw_error:
      +            assert "function_call" in message, "No function call detected"
      +            assert (
      +                message["function_call"]["name"] == self.openai_schema["name"]
      +            ), "Function name does not match"
      +
      +        function_call = message["function_call"]
      +        arguments = json.loads(function_call["arguments"], strict=False)
      +        return self.validate_func(**arguments)
      +
      +
      + + + +
      + + + + + + + + + + +
      + + + +

      +from_response(completion, throw_error=True) + +

      + + +
      + +

      Parse the response from OpenAI's API and return the function call

      + + + +

      Parameters:

      + + + + + + + + + + + + + + + + + + + + + + + +
      NameTypeDescriptionDefault
      completion + ChatCompletion + +
      +

      The response from OpenAI's API

      +
      +
      + required +
      throw_error + bool + +
      +

      Whether to throw an error if the response does not contain a function call

      +
      +
      + True +
      + + + +

      Returns:

      + + + + + + + + + + + + + +
      Name TypeDescription
      result + any + +
      +

      result of the function call

      +
      +
      + +
      + Source code in instructor/function_calls.py +
      def from_response(self, completion, throw_error=True):
      +    """
      +    Parse the response from OpenAI's API and return the function call
      +
      +    Parameters:
      +        completion (openai.ChatCompletion): The response from OpenAI's API
      +        throw_error (bool): Whether to throw an error if the response does not contain a function call
      +
      +    Returns:
      +        result (any): result of the function call
      +    """
      +    message = completion['choices'][0]['message']
      +
      +    if throw_error:
      +        assert "function_call" in message, "No function call detected"
      +        assert (
      +            message["function_call"]["name"] == self.openai_schema["name"]
      +        ), "Function name does not match"
      +
      +    function_call = message["function_call"]
      +    arguments = json.loads(function_call["arguments"], strict=False)
      +    return self.validate_func(**arguments)
      +
      +
      +
      + +
      + + + +
      + +
      + +
      + + + + +
      + +
      + +
      + + + + + + + + +
      +
      + + +
      + +
      + + + +
      +
      +
      +
      + + + + + + + + + \ No newline at end of file diff --git a/philosophy/index.html b/philosophy/index.html new file mode 100644 index 000000000..e202c8bb9 --- /dev/null +++ b/philosophy/index.html @@ -0,0 +1,853 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Philosophy - Instructor (openai_function_call) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + +
      + + + + + + + +
      + +
      + + + + +
      +
      + + + +
      +
      +
      + + + + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      + + + + + + + +

      Philosophy

      +

      The philosophy behind this library is to provide a lightweight and flexible approach to leveraging language models (LLMs) to do structured output without imposing unnecessary dependencies or abstractions.

      +

      By treating LLMs as just another function that returns a typed object, this library aims to remove the perceived complexity and make working with LLMs more approachable. It provides a flexible foundation for incorporating LLMs into your projects while allowing you to leverage the full power of Python to write your own code.

      +
        +
      1. Define a Schema class StructuredData(OpenAISchema):
      2. +
      3. Encapsulate all your LLM logic into a function def extract(a) -> StructuredData:
      4. +
      5. Define typed computations against your data with def compute(data: StructuredData):
      6. +
      +

      Here are some key points to understand:

      +
        +
      • +

        Minimal Installation: This library is designed to be lightweight. If you prefer not to install the library and its two dependencies, you can simply extract the function_calls.py file from the code and incorporate it directly into your project. Own it. It is a single script.

        +
      • +
      • +

        Code as prompts: With both the DSL and the structured extraction we don't make a distinction between a code vs a prompt template. We believe the prompts that go into a LLM should be constructed and collocated with the code we need to execute. Prompts are created via docstrings, descriptions and functions that construct messages.

        +
      • +
      • +

        Writing Prompts: The library also includes an experimental prompt pipeline api. The DSL is a thin wrapper that aims to improve code readability by adding light abstraction around templates as messages. It provides a slightly more intuitive syntax for working with LLMs, making the prompting easier to read.

        +
          +
        • No Abstractions for Retrieval or Execution: The library does not impose any abstractions for retrieval or execution. Python code is considered to be great glue code, and there is no need to force the use of additional abstractions. You have the freedom to use any retrieval or execution mechanism that suits your needs.
        • +
        +
        +

        Roll your own

        +

        If you want to do retrival simply make a class that extracts a query and implement a method that calls to get the data!

        +
        import ...
        +
        +class Search(OpenAISchema):
        +    "Extract the search query from a question a query"
        +    query: str 
        +
        +    def execute(self):
        +        return vectordb.query(self.query).to_string()
        +
        +req = (
        +    ChatCompletion("Query Extraction")
        +    | TaggedMessage(content="can you tell me who is Jason Liu?", tag="query")
        +    | Search
        +) 
        +query = req.create() # Search(query="Jason Liu")
        +query.execute()      # "Jason Liu has a twitter account @jxnlco"
        +
        +
        +
          +
        • Message as the Building Block: In the DSL, the fundamental building block is a message or an OpenAI schema call. Retrieval should be implemented as code that returns a message to be used in retrieval-augmented generation. This approach allows for flexibility and customization in handling different types of inputs and outputs.
        • +
        +
        +

        Roll your own, again

        +

        If you want to do augmentation, you can simple make a function that returns the data in a message and | it back into the completion.

        +
        import ...
        +
        +class Response(OpenAISchema):
        +    "Question answer pairs"
        +    question: str
        +    answer: str
        +
        +
        +def augment(query):
        +    return TaggedMessage(content=vectordb.query(self.query).to_string(), tag="data")
        +
        +
        +query = "does jason have social media?"
        +req = (
        +    ChatCompletion("Q/A System")
        +    | augment(query=query)
        +    | UserMessage(f"Use the data to answer the question: {query}")
        +    | Response
        +)
        +response = req.create()
        +# Response(
        +#   question="does jason have social media?", 
        +#   answer="yes, his twitter is @jxnlco
        +# )
        +
        +
        +
      • +
      +

      Please note that the library is designed to be adaptable and open-ended, allowing you to customize and extend its functionality based on your specific requirements.

      +

      If you have any further questions or ideas hit me up on twitter

      + + + + + + + + +
      +
      + + +
      + +
      + + + +
      +
      +
      +
      + + + + + + + + + \ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 000000000..62cc1c399 --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Instructor (openai_function_call)","text":"

      Renaming from openai_function_call

      This library used to be called openai_function_call simply change the import and you should be good to go!

      find /path/to/dir -type f -exec sed -i 's/openai_function_call/instructor/g' {} \\;\n

      Structured extraction in Python, powered by OpenAI's function calling api, designed for simplicity, transparency, and control.

      This library is built to interact with openai's function call api from python code, with python structs / objects. It's designed to be intuitive, easy to use, but give great visibily in how we call openai.

      The approach of combining a human prompt and a \"response schema\" is not necessarily unique; however, it shows great promise. As we have been concentrating on translating user intent into structured data, we have discovered that Python with Pydantic is exceptionally well-suited for this task.

      OpenAISchema is based on Python type annotations, and powered by Pydantic.

      The key features are:

      • Intuitive to write: Great support for editors, completions. Spend less time debugging.
      • Writing prompts as code: Collocate docstrings and descriptions as part of your prompting.
      • Extensible: Bring your own kitchen sink without being weighted down by abstractions.
      "},{"location":"#structured-extraction-with-openai","title":"Structured Extraction with openai","text":"

      Welcome to the Quick Start Guide for OpenAI Function Call. This guide will walk you through the installation process and provide examples demonstrating the usage of function calls and schemas with OpenAI and Pydantic.

      "},{"location":"#requirements","title":"Requirements","text":"

      This library depends on Pydantic and OpenAI that's all.

      "},{"location":"#installation","title":"Installation","text":"

      To get started with OpenAI Function Call, you need to install it using pip. Run the following command in your terminal:

      Note

      Ensure you have Python version 3.9 or above.

      $ pip install instructor\n
      "},{"location":"#quick-start-with-patching-chatcompletion","title":"Quick Start with Patching ChatCompletion","text":"

      To simplify your work with OpenAI models and streamline the extraction of Pydantic objects from prompts, we offer a patching mechanism for the `ChatCompletion`` class. Here's a step-by-step guide:

      "},{"location":"#step-1-import-and-patch-the-module","title":"Step 1: Import and Patch the Module","text":"

      First, import the required libraries and apply the patch function to the OpenAI module. This exposes new functionality with the response_model parameter.

      import openai\nfrom pydantic import BaseModel\nfrom instructor import patch\npatch()\n
      "},{"location":"#step-2-define-the-pydantic-model","title":"Step 2: Define the Pydantic Model","text":"

      Create a Pydantic model to define the structure of the data you want to extract. This model will map directly to the information in the prompt.

      class UserDetail(BaseModel):\nname: str\nage: int\n
      "},{"location":"#step-3-extract-data-with-chatcompletion","title":"Step 3: Extract Data with ChatCompletion","text":"

      Use the openai.ChatCompletion.create method to send a prompt and extract the data into the Pydantic object. The response_model parameter specifies the Pydantic model to use for extraction.

      user: UserDetail = openai.ChatCompletion.create(\nmodel=\"gpt-3.5-turbo\",\nresponse_model=UserDetail,\nmessages=[\n{\"role\": \"user\", \"content\": \"Extract Jason is 25 years old\"},\n]\n)\n
      "},{"location":"#step-4-validate-the-extracted-data","title":"Step 4: Validate the Extracted Data","text":"

      You can then validate the extracted data by asserting the expected values. By adding the type things you also get a bunch of nice benefits with your IDE like spell check and auto complete!

      assert user.name == \"Jason\"\nassert user.age == 25\n
      "},{"location":"#introduction-to-openaischema","title":"Introduction to OpenAISchema","text":"

      If you want more control than just passing a single class we can use the OpenAISchema which extends BaseModel.

      This quick start guide contains the follow sections:

      1. Defining a schema
      2. Adding Additional Prompting
      3. Calling the ChatCompletion
      4. Deserializing back to the instance

      OpenAI Function Call allows you to leverage OpenAI's powerful language models for function calls and schema extraction. This guide provides a quick start for using OpenAI Function Call.

      "},{"location":"#section-1-defining-a-schema","title":"Section 1: Defining a Schema","text":"

      To begin, let's define a schema using OpenAI Function Call. A schema describes the structure of the input and output data for a function. In this example, we'll define a simple schema for a User object:

      from instructor import OpenAISchema\nclass UserDetails(OpenAISchema):\nname: str\nage: int\n

      In this schema, we define a UserDetails class that extends OpenAISchema. We declare two fields, name and age, of type str and int respectively.

      "},{"location":"#section-2-adding-additional-prompting","title":"Section 2: Adding Additional Prompting","text":"

      To enhance the performance of the OpenAI language model, you can add additional prompting in the form of docstrings and field descriptions. They can provide context and guide the model on how to process the data.

      !!! note Using patch these docstrings and fields descriptions are powered by pydantic.BaseModel so they'll work via the patching approach as well.

      from instructor import OpenAISchema\nfrom pydantic import Field\nclass UserDetails(OpenAISchema):\n\"Correctly extracted user information\"\nname: str = Field(..., description=\"User's full name\")\nage: int\n

      In this updated schema, we use the Field class from pydantic to add descriptions to the name field. The description provides information about the field, giving even more context to the language model.

      Code, schema, and prompt

      We can run openai_schema to see exactly what the API will see, notice how the docstrings, attributes, types, and field descriptions are now part of the schema. This describes on this library's core philosophies.

      class UserDetails(OpenAISchema):\n\"Correctly extracted user information\"\nname: str = Field(..., description=\"User's full name\")\nage: int\nUserDetails.openai_schema\n
      {\n\"name\": \"UserDetails\",\n\"description\": \"Correctly extracted user information\",\n\"parameters\": {\n\"type\": \"object\",\n\"properties\": {\n\"name\": {\n\"description\": \"User's full name\",\n\"type\": \"string\"\n},\n\"age\": {\n\"type\": \"integer\"\n}\n},\n\"required\": [\n\"age\",\n\"name\"\n]\n}\n}\n
      "},{"location":"#section-3-calling-the-chatcompletion","title":"Section 3: Calling the ChatCompletion","text":"

      With the schema defined, let's proceed with calling the ChatCompletion API using the defined schema and messages.

      from instructor import OpenAISchema\nfrom pydantic import Field\nclass UserDetails(OpenAISchema):\n\"Correctly extracted user information\"\nname: str = Field(..., description=\"User's full name\")\nage: int\ncompletion = openai.ChatCompletion.create(\nmodel=\"gpt-3.5-turbo-0613\",\nfunctions=[UserDetails.openai_schema],\nfunction_call={\"name\": UserDetails.openai_schema[\"name\"]},\nmessages=[\n{\"role\": \"system\", \"content\": \"Extract user details from my requests\"},\n{\"role\": \"user\", \"content\": \"My name is John Doe and I'm 30 years old.\"},\n],\n)\n

      In this example, we make a call to the ChatCompletion API by providing the model name (gpt-3.5-turbo-0613) and a list of messages. The messages consist of a system message and a user message. The system message sets the context by requesting user details, while the user message provides the input with the user's name and age.

      Note that we have omitted the additional parameters that can be included in the API request, such as temperature, max_tokens, and n. These parameters can be customized according to your requirements.

      "},{"location":"#section-4-deserializing-back-to-the-instance","title":"Section 4: Deserializing Back to the Instance","text":"

      To deserialize the response from the ChatCompletion API back into an instance of the UserDetails class, we can use the from_response method.

      user = UserDetails.from_response(completion)\nprint(user.name)  # Output: John Doe\nprint(user.age)   # Output: 30\n

      By calling UserDetails.from_response, we create an instance of the UserDetails class using the response from the API call. Subsequently, we can access the extracted user details through the name and age attributes of the user object.

      "},{"location":"#ide-support","title":"IDE Support","text":"

      Everything is designed for you to get the best developer experience possible, with the best editor support.

      Including autocompletion:

      And even inline errors

      "},{"location":"#openai-schema-and-pydantic","title":"OpenAI Schema and Pydantic","text":"

      This quick start guide provided you with a basic understanding of how to use OpenAI Function Call for schema extraction and function calls. You can now explore more advanced use cases and creative applications of this library.

      Since UserDetails is a OpenAISchems and a pydantic.BaseModel you can use inheritance and nesting to create more complex emails while avoiding code duplication

      class UserDetails(OpenAISchema):\nname: str = Field(..., description=\"User's full name\")\nage: int\nclass UserWithAddress(UserDetails):\naddress: str \nclass UserWithFriends(UserDetails):\nbest_friend: UserDetails\nfriends: List[UserDetails]\n

      If you have any questions, feel free to leave an issue or reach out to the library's author on Twitter. For a more comprehensive solution with additional features, consider checking out MarvinAI.

      To see more examples of how we can create interesting models check out some examples.

      "},{"location":"#license","title":"License","text":"

      This project is licensed under ther terms of the MIT License.

      "},{"location":"api_multitask/","title":"API: MultiTask","text":""},{"location":"api_multitask/#instructor.dsl.multitask.MultiTask","title":"MultiTask(subtask_class, name=None, description=None)","text":"

      Dynamically create a MultiTask OpenAISchema that can be used to segment multiple tasks given a base class. This creates class that can be used to create a toolkit for a specific task, names and descriptions are automatically generated. However they can be overridden.

      Note

      Using this function is equivalent to creating a class that inherits from OpenAISchema and has a list of the subtask class as a field.

      class MultiTask(OpenAISchema):\n\"\"\"\n    Correct segmentation of `{subtask_class.__name__}` tasks\n    \"\"\"\ntasks: List[subtask_class] = Field(\ndefault_factory=list,\nrepr=False,\ndescription=f\"Correctly segmented list of `{subtask_class.__name__}` tasks\",\n)\n

      Parameters:

      Name Type Description Default subtask_class Type[OpenAISchema]

      The base class to use for the MultiTask

      required name Optional[str]

      The name of the MultiTask class, if None then the name of the subtask class is used as Multi{subtask_class.__name__}

      None description Optional[str]

      The description of the MultiTask class, if None then the description is set to Correct segmentation of{subtask_class.name}tasks

      None

      Returns:

      Name Type Description schema OpenAISchema

      A new class that can be used to segment multiple tasks

      Source code in instructor/dsl/multitask.py
      def MultiTask(\nsubtask_class: Type[BaseModel],\nname: Optional[str] = None,\ndescription: Optional[str] = None,\n):\n\"\"\"\n    Dynamically create a MultiTask OpenAISchema that can be used to segment multiple\n    tasks given a base class. This creates class that can be used to create a toolkit\n    for a specific task, names and descriptions are automatically generated. However\n    they can be overridden.\n    Note:\n        Using this function is equivalent to creating a class that inherits from\n        OpenAISchema and has a list of the subtask class as a field.\n        ```python\n        class MultiTask(OpenAISchema):\n            \\\"\"\"\nCorrect segmentation of `{subtask_class.__name__}` tasks\n            \\\"\"\"\n            tasks: List[subtask_class] = Field(\n                default_factory=list,\n                repr=False,\n                description=f\"Correctly segmented list of `{subtask_class.__name__}` tasks\",\n            )\n        ```\n    Parameters:\n        subtask_class (Type[OpenAISchema]): The base class to use for the MultiTask\n        name (Optional[str]): The name of the MultiTask class, if None then the name\n            of the subtask class is used as `Multi{subtask_class.__name__}`\n        description (Optional[str]): The description of the MultiTask class, if None\n            then the description is set to `Correct segmentation of `{subtask_class.__name__}` tasks`\n    Returns:\n        schema (OpenAISchema): A new class that can be used to segment multiple tasks\n    \"\"\"\ntask_name = subtask_class.__name__ if name is None else name\nname = f\"Multi{task_name}\"\nlist_tasks = (\nList[subtask_class],\nField(\ndefault_factory=list,\nrepr=False,\ndescription=f\"Correctly segmented list of `{task_name}` tasks\",\n),\n)\nnew_cls = create_model(\nname,\ntasks=list_tasks,\n__base__=(OpenAISchema, MultiTaskBase),\n)\n# set the class constructor BaseModel\nnew_cls.task_type = subtask_class\nnew_cls.__doc__ = (\nf\"Correct segmentation of `{task_name}` tasks\"\nif description is None\nelse description\n)\nreturn new_cls\n
      "},{"location":"chat-completion/","title":"Using the Prompt Pipeline","text":"

      To use the Prompt Pipeline in OpenAI Function Call, you need to instantiate a ChatCompletion object and build the API call by piping messages and functions to it.

      "},{"location":"chat-completion/#the-chatcompletion-object","title":"The ChatCompletion Object","text":"

      The ChatCompletion object is the starting point for constructing your API call. It provides the necessary methods and attributes to define the conversation flow and include function calls.

      "},{"location":"chat-completion/#instructor.dsl.completion.ChatCompletion","title":"ChatCompletion","text":"

      Bases: BaseModel

      A chat completion is a collection of messages and configration options that can be used to generate a chat response from the OpenAI API.

      Usage

      In order to generate a chat response from the OpenAI API, you need to create a chat completion and then pipe it to a message and a OpenAISchema. Then when create or acreate is called we'll return the response from the API as an instance of OpenAISchema.

      Example
      class Sum(OpenAISchema):\na: int\nb: int\ncompletion = (\nChatCompletion(\"example\")\n| TaggedMessage(content=\"What is 1 + 1?\", tag=\"question\")\n| Schema\n)\nprint(completion.create())\n# Sum(a=1, b=1)\n
      Tips
      • You can use the | operator to chain multiple messages and functions together
      • There should be exactly one function call class (OpenAISchema) per chat completion
      • System messages will be concatenated together
      • Only one chain of thought message can be used per completion

      Attributes:

      Name Type Description name str

      The name of the chat completion

      model str

      The model to use for the chat completion (default: \"gpt-3.5-turbo-0613\")

      max_tokens int

      The maximum number of tokens to generate (default: 1000)

      temperature float

      The temperature to use for the chat completion (default: 0.1)

      stream bool

      Whether to stream the response from the API (default: False)

      Warning

      Currently we do not support streaming the response from the API, so the stream parameter is not supported yet.

      Source code in instructor/dsl/completion.py
      class ChatCompletion(BaseModel):\n\"\"\"\n    A chat completion is a collection of messages and configration options that can be used to\n    generate a chat response from the OpenAI API.\n    Usage:\n        In order to generate a chat response from the OpenAI API, you need to create a chat completion and then pipe it to a message and a `OpenAISchema`. Then when `create` or `acreate` is called we'll return the response from the API as an instance of `OpenAISchema`.\n    Example:\n        ```python\n        class Sum(OpenAISchema):\n            a: int\n            b: int\n        completion = (\n            ChatCompletion(\"example\")\n            | TaggedMessage(content=\"What is 1 + 1?\", tag=\"question\")\n            | Schema\n        )\n        print(completion.create())\n        # Sum(a=1, b=1)\n        ```\n    Tips:\n        * You can use the `|` operator to chain multiple messages and functions together\n        * There should be exactly one function call class (OpenAISchema) per chat completion\n        * System messages will be concatenated together\n        * Only one chain of thought message can be used per completion\n    Attributes:\n        name (str): The name of the chat completion\n        model (str): The model to use for the chat completion (default: \"gpt-3.5-turbo-0613\")\n        max_tokens (int): The maximum number of tokens to generate (default: 1000)\n        temperature (float): The temperature to use for the chat completion (default: 0.1)\n        stream (bool): Whether to stream the response from the API (default: False)\n    Warning:\n        Currently we do not support streaming the response from the API, so the stream parameter is not supported yet.\n    \"\"\"\nname: str\nmodel: str = Field(default=\"gpt-3.5-turbo-0613\")\nmax_tokens: int = Field(default=1000)\ntemperature: float = Field(default=0.1)\nstream: bool = Field(default=False)\nmessages: List[Message] = Field(default_factory=list, repr=False)\nsystem_message: Message = Field(default=None, repr=False)\ncot_message: ChainOfThought = Field(default=None, repr=False)\nfunction: OpenAISchema = Field(default=None, repr=False)\ndef __post_init__(self):\nassert self.stream == False, \"Stream is not supported yet\"\ndef __or__(self, other: Union[Message, OpenAISchema]) -> \"ChatCompletion\":\n\"\"\"\n        Add a message or function to the chat completion, this can be used to chain multiple messages and functions together. It should contain some set of user or system messages along with a function call class (OpenAISchema)\n        \"\"\"\nif isinstance(other, Message):\nif other.role == MessageRole.SYSTEM:\nif not self.system_message:\nself.system_message = other  # type: ignore\nelse:\nself.system_message.content += \"\\n\\n\" + other.content\nelse:\nif isinstance(other, ChainOfThought):\nif self.cot_message:\nraise ValueError(\n\"Only one chain of thought message can be used per completion\"\n)\nself.cot_message = other\nself.messages.append(other)\nelse:\nif self.function:\nraise ValueError(\n\"Only one function can be used per completion, wrap your tools into a single toolkit schema\"\n)\nself.function = other\nassert self.model not in {\n\"gpt-3.5-turbo\",\n\"gpt-4\",\n}, \"Only *-0613 models can currently use functions\"\nreturn self\n@property\ndef kwargs(self) -> dict:\n\"\"\"\n        Construct the kwargs for the OpenAI API call\n        Example:\n            ```python\n            result = openai.ChatCompletion.create(**self.kwargs)\n            ```\n        \"\"\"\nkwargs = {}\nmessages = []\nif self.system_message:\nmessages.append(self.system_message.dict())\nif self.messages:\nspecial_types = {\nSystemMessage,\nChainOfThought,\n}\nmessages += [\nmessage.dict()\nfor message in self.messages\nif type(message) not in special_types\n]\nif self.cot_message:\nmessages.append(self.cot_message.dict())\nkwargs[\"messages\"] = messages\nif self.function:\nkwargs[\"functions\"] = [self.function.openai_schema]\nkwargs[\"function_call\"] = {\"name\": self.function.openai_schema[\"name\"]}\nkwargs[\"max_tokens\"] = self.max_tokens\nkwargs[\"temperature\"] = self.temperature\nkwargs[\"model\"] = self.model\nreturn kwargs\ndef create(self):\n\"\"\"\n        Create a chat response from the OpenAI API\n        Returns:\n            response (OpenAISchema): The response from the OpenAI API\n        \"\"\"\nkwargs = self.kwargs\ncompletion = openai.ChatCompletion.create(**kwargs)\nif self.function:\nreturn self.function.from_response(completion)\nreturn completion\nasync def acreate(self):\n\"\"\"\n        Create a chat response from the OpenAI API asynchronously\n        Returns:\n            response (OpenAISchema): The response from the OpenAI API\n        \"\"\"\nkwargs = self.kwargs\ncompletion = openai.ChatCompletion.acreate(**kwargs)\nif self.function:\nreturn self.function.from_response(await completion)\nreturn await completion\n
      "},{"location":"chat-completion/#instructor.dsl.completion.ChatCompletion.kwargs","title":"kwargs: dict property","text":"

      Construct the kwargs for the OpenAI API call

      Example
      result = openai.ChatCompletion.create(**self.kwargs)\n
      "},{"location":"chat-completion/#instructor.dsl.completion.ChatCompletion.__or__","title":"__or__(other)","text":"

      Add a message or function to the chat completion, this can be used to chain multiple messages and functions together. It should contain some set of user or system messages along with a function call class (OpenAISchema)

      Source code in instructor/dsl/completion.py
      def __or__(self, other: Union[Message, OpenAISchema]) -> \"ChatCompletion\":\n\"\"\"\n    Add a message or function to the chat completion, this can be used to chain multiple messages and functions together. It should contain some set of user or system messages along with a function call class (OpenAISchema)\n    \"\"\"\nif isinstance(other, Message):\nif other.role == MessageRole.SYSTEM:\nif not self.system_message:\nself.system_message = other  # type: ignore\nelse:\nself.system_message.content += \"\\n\\n\" + other.content\nelse:\nif isinstance(other, ChainOfThought):\nif self.cot_message:\nraise ValueError(\n\"Only one chain of thought message can be used per completion\"\n)\nself.cot_message = other\nself.messages.append(other)\nelse:\nif self.function:\nraise ValueError(\n\"Only one function can be used per completion, wrap your tools into a single toolkit schema\"\n)\nself.function = other\nassert self.model not in {\n\"gpt-3.5-turbo\",\n\"gpt-4\",\n}, \"Only *-0613 models can currently use functions\"\nreturn self\n
      "},{"location":"chat-completion/#instructor.dsl.completion.ChatCompletion.acreate","title":"acreate() async","text":"

      Create a chat response from the OpenAI API asynchronously

      Returns:

      Name Type Description response OpenAISchema

      The response from the OpenAI API

      Source code in instructor/dsl/completion.py
      async def acreate(self):\n\"\"\"\n    Create a chat response from the OpenAI API asynchronously\n    Returns:\n        response (OpenAISchema): The response from the OpenAI API\n    \"\"\"\nkwargs = self.kwargs\ncompletion = openai.ChatCompletion.acreate(**kwargs)\nif self.function:\nreturn self.function.from_response(await completion)\nreturn await completion\n
      "},{"location":"chat-completion/#instructor.dsl.completion.ChatCompletion.create","title":"create()","text":"

      Create a chat response from the OpenAI API

      Returns:

      Name Type Description response OpenAISchema

      The response from the OpenAI API

      Source code in instructor/dsl/completion.py
      def create(self):\n\"\"\"\n    Create a chat response from the OpenAI API\n    Returns:\n        response (OpenAISchema): The response from the OpenAI API\n    \"\"\"\nkwargs = self.kwargs\ncompletion = openai.ChatCompletion.create(**kwargs)\nif self.function:\nreturn self.function.from_response(completion)\nreturn completion\n
      "},{"location":"chat-completion/#messages-types","title":"Messages Types","text":"

      The basis of a message is defined as a dataclass. However, we provide helper functions and classes that provide additional functionality in the form of templates.

      "},{"location":"chat-completion/#instructor.dsl.messages.base.Message","title":"Message","text":"

      A message class that helps build messages for the chat interface.

      Attributes:

      Name Type Description content str

      The content of the message.

      role MessageRole

      The role of the message.

      name Optional[str]

      The name of the user, only used if the role is USER.

      Tips

      If you want to make custom messages simple make a function that returns the Message class and use that as part of your pipes. For example if you want to add additional context:

      def GetUserData(user_id) -> Message:\ndata = ...\nreturn Message(\ncontent=\"This is some more user data: {data} for {user_id}\nrole=MessageRole.USER\n)\n
      Source code in instructor/dsl/messages/base.py
      @dataclass\nclass Message:\n\"\"\"\n    A message class that helps build messages for the chat interface.\n    Attributes:\n        content (str): The content of the message.\n        role (MessageRole): The role of the message.\n        name (Optional[str]): The name of the user, only used if the role is USER.\n    Tips:\n        If you want to make custom messages simple make a function that returns the `Message` class and use that as part of your pipes. For example if you want to add additional context:\n        ```python\n        def GetUserData(user_id) -> Message:\n            data = ...\n            return Message(\n                content=\"This is some more user data: {data} for {user_id}\n                role=MessageRole.USER\n            )\n        ```\n    \"\"\"\ncontent: str = Field(default=None, repr=True)\nrole: MessageRole = Field(default=MessageRole.USER, repr=False)\nname: Optional[str] = Field(default=None)\ndef dict(self):\nassert self.content is not None, \"Content must be set!\"\nobj = {\n\"role\": self.role.name.lower(),\n\"content\": self.content,\n}\nif self.name and self.role == MessageRole.USER:\nobj[\"name\"] = self.name\nreturn obj\n
      "},{"location":"chat-completion/#instructor.dsl.messages.base.MessageRole","title":"MessageRole","text":"

      Bases: Enum

      An enum that represents the role of a message.

      Attributes:

      Name Type Description USER

      A message from the user.

      SYSTEM

      A message from the system.

      ASSISTANT

      A message from the assistant.

      Source code in instructor/dsl/messages/base.py
      class MessageRole(Enum):\n\"\"\"\n    An enum that represents the role of a message.\n    Attributes:\n        USER: A message from the user.\n        SYSTEM: A message from the system.\n        ASSISTANT: A message from the assistant.\n    \"\"\"\nUSER = auto()\nSYSTEM = auto()\nASSISTANT = auto()\n
      "},{"location":"chat-completion/#helper-messages-templates","title":"Helper Messages / Templates","text":""},{"location":"chat-completion/#instructor.dsl.messages.messages.ChainOfThought","title":"ChainOfThought","text":"

      Bases: Message

      Special message type to correctly leverage chain of thought reasoning for the task. This is automatically set as the last message.

      Source code in instructor/dsl/messages/messages.py
      @dataclass\nclass ChainOfThought(Message):\n\"\"\"\n    Special message type to correctly leverage chain of thought reasoning\n    for the task. This is automatically set as the last message.\n    \"\"\"\ndef __post_init__(self):\nself.content = \"Lets think step by step to get the correct answer:\"\nself.role = MessageRole.ASSISTANT\n
      "},{"location":"chat-completion/#instructor.dsl.messages.messages.SystemGuidelines","title":"SystemGuidelines(guidelines)","text":"

      Create a system message that tells the user what guidelines they must follow when responding.

      Parameters:

      Name Type Description Default guidelines List[str]

      The guidelines the user must follow when responding.

      required

      Returns:

      Name Type Description message Message

      A system message that tells the user what guidelines they must follow when responding.

      Source code in instructor/dsl/messages/messages.py
      def SystemGuidelines(guidelines: List[str]) -> Message:\n\"\"\"\n    Create a system message that tells the user what guidelines they must follow when responding.\n    Parameters:\n        guidelines (List[str]): The guidelines the user must follow when responding.\n    Returns:\n        message (Message): A system message that tells the user what guidelines they must follow when responding.\n    \"\"\"\nguideline_str = \"\\n* \".join(guidelines)\nreturn Message(\ncontent=f\"Here are the guidelines you must to follow when responding:\\n\\n* {guideline_str}\",\nrole=MessageRole.SYSTEM,\n)\n
      "},{"location":"chat-completion/#instructor.dsl.messages.messages.SystemIdentity","title":"SystemIdentity(identity)","text":"

      Create a system message that tells the user what their identity is.

      Parameters:

      Name Type Description Default identity str

      The identity of the user.

      required

      Returns:

      Name Type Description message Message

      A system message that tells the user what their identity is.

      Source code in instructor/dsl/messages/messages.py
      def SystemIdentity(identity: str) -> Message:\n\"\"\"\n    Create a system message that tells the user what their identity is.\n    Parameters:\n        identity (str): The identity of the user.\n    Returns:\n        message (Message): A system message that tells the user what their identity is.\n    \"\"\"\nreturn Message(content=f\"You are a {identity.lower()}.\", role=MessageRole.SYSTEM)\n
      "},{"location":"chat-completion/#instructor.dsl.messages.messages.SystemMessage","title":"SystemMessage(content)","text":"

      Create a system message.

      Parameters:

      Name Type Description Default content str

      The content of the message.

      required

      Returns:

      Name Type Description message Message

      A system message.

      Source code in instructor/dsl/messages/messages.py
      def SystemMessage(content: str) -> Message:\n\"\"\"\n    Create a system message.\n    Parameters:\n        content (str): The content of the message.\n    Returns:\n        message (Message): A system message.\"\"\"\nreturn Message(content=content, role=MessageRole.SYSTEM)\n
      "},{"location":"chat-completion/#instructor.dsl.messages.messages.SystemStyle","title":"SystemStyle(style)","text":"

      Create a system message that tells the user what style they are responding in.

      Parameters:

      Name Type Description Default style str

      The style the user is responding in.

      required

      Returns:

      Name Type Description message Message

      A system message that tells the user what style they are responding in.

      Source code in instructor/dsl/messages/messages.py
      def SystemStyle(style: str) -> Message:\n\"\"\"\n    Create a system message that tells the user what style they are responding in.\n    Parameters:\n        style (str): The style the user is responding in.\n    Returns:\n        message (Message): A system message that tells the user what style they are responding in.\n    \"\"\"\nreturn Message(\ncontent=f\"You must respond with in following style: {style.lower()}.\",\nrole=MessageRole.SYSTEM,\n)\n
      "},{"location":"chat-completion/#instructor.dsl.messages.messages.SystemTask","title":"SystemTask(task)","text":"

      Create a system message that tells the user what task they are doing, uses language to push the system to behave as a world class algorithm.

      Parameters:

      Name Type Description Default task str

      The task the user is doing.

      required

      Returns:

      Name Type Description message Message

      A system message that tells the user what task they are doing.

      Source code in instructor/dsl/messages/messages.py
      def SystemTask(task: str) -> Message:\n\"\"\"\n    Create a system message that tells the user what task they are doing, uses language to\n    push the system to behave as a world class algorithm.\n    Parameters:\n        task (str): The task the user is doing.\n    Returns:\n        message (Message): A system message that tells the user what task they are doing.\n    \"\"\"\nreturn Message(\ncontent=f\"You are a world class state of the art algorithm capable of correctly completing the following task: `{task}`.\",\nrole=MessageRole.SYSTEM,\n)\n
      "},{"location":"chat-completion/#instructor.dsl.messages.messages.SystemTips","title":"SystemTips(tips)","text":"

      Create a system message that gives the user some tips before responding.

      Parameters:

      Name Type Description Default tips List[str]

      The tips the user should follow when responding.

      required

      Returns:

      Name Type Description message Message

      A system message that gives the user some tips before responding.

      Source code in instructor/dsl/messages/messages.py
      def SystemTips(tips: List[str]) -> Message:\n\"\"\"\n    Create a system message that gives the user some tips before responding.\n    Parameters:\n        tips (List[str]): The tips the user should follow when responding.\n    Returns:\n        message (Message): A system message that gives the user some tips before responding.\n    \"\"\"\ntips_str = \"\\n* \".join(tips)\nreturn Message(\ncontent=f\"Here are some tips before responding:\\n\\n* {tips_str}\",\nrole=MessageRole.SYSTEM,\n)\n
      "},{"location":"chat-completion/#instructor.dsl.messages.user.TaggedMessage","title":"TaggedMessage(content, tag='data', header='Consider the following data:')","text":"

      Create a user message.

      Parameters:

      Name Type Description Default content str

      The content of the message.

      required tag str

      The tag to use, will show up as content.

      'data' header str

      The header to reference the data

      'Consider the following data:'

      Returns:

      Name Type Description message Message

      A user message with the data tagged.

      Source code in instructor/dsl/messages/user.py
      def TaggedMessage(\ncontent: str, tag: str = \"data\", header: str = \"Consider the following data:\"\n) -> Message:\n\"\"\"\n    Create a user message.\n    Parameters:\n        content (str): The content of the message.\n        tag (str): The tag to use, will show up as <tag>content</tag>.\n        header (str): The header to reference the data\n    Returns:\n        message (Message): A user message with the data tagged.\n    \"\"\"\ncontent = f\"{header}\\n\\n<{tag}>{content}</{tag}>\"\nreturn Message(content=content, role=MessageRole.USER)\n
      "},{"location":"chat-completion/#instructor.dsl.messages.user.TipsMessage","title":"TipsMessage(tips, header='Here are some tips to help you complete the task')","text":"

      Create a system message that gives the user tips to help them complete the task.

      Parameters:

      Name Type Description Default tips List[str]

      A list of tips to help the user complete the task.

      required header str

      The header of the message.

      'Here are some tips to help you complete the task'

      Returns:

      Name Type Description message Message

      A user message that gives the user tips to help them complete the

      Source code in instructor/dsl/messages/user.py
      def TipsMessage(\ntips: List[str], header: str = \"Here are some tips to help you complete the task\"\n) -> Message:\n\"\"\"\n    Create a system message that gives the user tips to help them complete the task.\n    Parameters:\n        tips (List[str]): A list of tips to help the user complete the task.\n        header (str): The header of the message.\n    Returns:\n        message (Message): A user message that gives the user tips to help them complete the\n    \"\"\"\ntips_str = \"\\n* \".join(tips)\nreturn Message(\ncontent=f\"{header}:\\n\\n* {tips_str}\",\nrole=MessageRole.USER,\n)\n
      "},{"location":"chat-completion/#instructor.dsl.messages.user.UserMessage","title":"UserMessage(content)","text":"

      Create a user message.

      Parameters:

      Name Type Description Default content str

      The content of the message.

      required

      Returns:

      Name Type Description message Message

      A user message.

      Source code in instructor/dsl/messages/user.py
      def UserMessage(content: str) -> Message:\n\"\"\"\n    Create a user message.\n    Parameters:\n        content (str): The content of the message.\n    Returns:\n        message (Message): A user message.\n    \"\"\"\nreturn Message(content=content, role=MessageRole.USER)\n
      "},{"location":"multitask/","title":"Patterns for Multiple Extraction","text":"

      A common use case of structured extraction is defining a single schema class and then making another schema to create a list to do multiple extraction

      class User(OpenAISchema):\nname: str\nage: int\nclass Users(OpenAISchema):\nusers: List[User]\n

      Defining a task and creating a list of classes is a common enough pattern that we define a helper function MultiTask It procides a function to dynamically create a new class that:

      1. Dynamic docstrings and class name baed on the task
      2. Helper method to support streaming by collectin function_call tokens until a object back out.
      "},{"location":"multitask/#extracting-tasks","title":"Extracting Tasks","text":"

      By using multitask you get a very convient class with prompts and names automatically defined. You get from_response just like any other OpenAISchema you're able to extract the list of objects data you want with MultTask.tasks.

      from instructor import OpenAISchema, MultiTask\nclass User(OpenAISchema):\nname: str\nage: int\nMultiUser = MultiTask(User)\ncompletion = openai.ChatCompletion.create(\nmodel=\"gpt-4-0613\",\ntemperature=0.1,\nstream=False,\nfunctions=[MultiUser.openai_schema],\nfunction_call={\"name\": MultiUser.openai_schema[\"name\"]},\nmessages=[\n{\n\"role\": \"user\",\n\"content\": f\"Consider the data below: Jason is 10 and John is 30\",\n},\n],\nmax_tokens=1000,\n)\nMultiUser.from_response(completion)\n
      {\"tasks\": [\n{\"name\": \"Jason\", \"age\": 10},\n    {\"name\": \"John\", \"age\": 30}\n]}\n
      "},{"location":"multitask/#streaming-tasks","title":"Streaming Tasks","text":"

      Since a MultiTask(T) is well contrained to tasks: List[T] we can make assuptions on how tokens are used and provide a helper method that allows you generate tasks as the the tokens are streamed in

      Why would we want this?

      While gpt-3.5-turbo is quite fast gpt-4 will take a while if there are many objects or if each object schema is complex. If 10 entities are created and takes 100ms to complete it would mean that it would take 1 second before we had access to our objects. With streaming you'd get the first object in 100ms a 10x percieved improvement in latency! While this may not make sense for more usecases if we were dynamitcally building UI based on entities, streaming entities 1 by 1 could improve the user experience dramatically.

      Lets look at an example in action with the same class

      MultiUser = MultiTask(User)\ncompletion = openai.ChatCompletion.create(\nmodel=\"gpt-4-0613\",\ntemperature=0.1,\nstream=True,\nfunctions=[MultiUser.openai_schema],\nfunction_call={\"name\": MultiUser.openai_schema[\"name\"]},\nmessages=[\n{\n\"role\": \"system\",\n\"content\": \"You are a perfect entity extraction system\",\n},\n{\n\"role\": \"user\",\n\"content\": (\nf\"Consider the data below:\\n{input}\"\n\"Correctly segment it into entitites\"\n\"Make sure the JSON is correct\"\n),\n},\n],\nmax_tokens=1000,\n)\nfor user in MultiUser.from_streaming_response(completion):\nassert isinstance(user, User)\nprint(user)\n>>> name=\"Jason\" \"age\"=10\n>>> name=\"John\" \"age\"=10\n

      How??

      Consider this incomplete json string.

      {\"tasks\": [{\"name\": \"Jason\", \"age\": 10}\n

      Notice how, while this isn't valid json, we know that one complete User object was generated so we yield that object to be used elsewhere as soon as possible.

      This streaming is still a prototype, but should work quite well for simple schemas.

      "},{"location":"openai_schema/","title":"OpenAI Schema","text":"

      The OpenAISchema is an extension of Pydantic.BaseModel that offers a minimally invasive way to define schemas for OpenAI completions. It provides two main methods: openai_schema to generate the correct schema and from_response to create an instance of the class from the completion result.

      "},{"location":"openai_schema/#prompt-placement","title":"Prompt Placement","text":"

      Our philosophy is to keep prompts close to the code. This is achieved by using docstrings and field descriptions to provide prompts and descriptions for your schema fields.

      "},{"location":"openai_schema/#structured-extraction","title":"Structured Extraction","text":"

      You can directly use the OpenAISchema class in your openai API create calls by passing in the openai_schema class property and extracting the class out using the from_response method. This style of usage provides full control over configuration and prompting.

      import openai\nfrom instructor import OpenAISchema\nfrom pydantic import Field\nclass UserDetails(OpenAISchema):\n\"\"\"Details of a user\"\"\"\nname: str = Field(..., description=\"User's full name\")\nage: int\ncompletion = openai.ChatCompletion.create(\nmodel=\"gpt-3.5-turbo-0613\",\nfunctions=[UserDetails.openai_schema],\nfunction_call={\"name\": UserDetails.openai_schema[\"name\"]},\nmessages=[\n{\"role\": \"system\", \"content\": \"Extract user details from my requests\"},\n{\"role\": \"user\", \"content\": \"My name is John Doe and I'm 30 years old.\"},\n],\n)\nuser_details = UserDetails.from_response(completion)\nprint(user_details)  # UserDetails(name='John Doe', age=30)\n

      You can also use the @openai_schema decorator to decorate BaseModels, but you may lose some type hinting as a result.

      import openai\nfrom instructor import openai_schema\nfrom pydantic import Field, BaseModel\n@openai_schema\nclass UserDetails(BaseModel):\n\"\"\"Details of a user\"\"\"\nname: str = Field(..., description=\"User's full name\")\nage: int\n
      "},{"location":"openai_schema/#code-reference","title":"Code Reference","text":"

      For more information about the code, including the complete API reference, please refer to the instructor documentation.

      "},{"location":"openai_schema/#instructor.function_calls.OpenAISchema","title":"OpenAISchema","text":"

      Bases: BaseModel

      Source code in instructor/function_calls.py
      class OpenAISchema(BaseModel):\n@classmethod\n@property\ndef openai_schema(cls):\n\"\"\"\n        Return the schema in the format of OpenAI's schema as jsonschema\n        Note:\n            Its important to add a docstring to describe how to best use this class, it will be included in the description attribute and be part of the prompt.\n        Returns:\n            model_json_schema (dict): A dictionary in the format of OpenAI's schema as jsonschema\n        \"\"\"\nschema = cls.model_json_schema()\nparameters = {\nk: v for k, v in schema.items() if k not in (\"title\", \"description\")\n}\nparameters[\"required\"] = sorted(\nk for k, v in parameters[\"properties\"].items() if not \"default\" in v\n)\nif \"description\" not in schema:\nschema[\n\"description\"\n] = f\"Correctly extracted `{cls.__name__}` with all the required parameters with correct types\"\n_remove_a_key(parameters, \"additionalProperties\")\n_remove_a_key(parameters, \"title\")\nreturn {\n\"name\": schema[\"title\"],\n\"description\": schema[\"description\"],\n\"parameters\": parameters,\n}\n@classmethod\ndef from_response(cls, completion, throw_error=True):\n\"\"\"Execute the function from the response of an openai chat completion\n        Parameters:\n            completion (openai.ChatCompletion): The response from an openai chat completion\n            throw_error (bool): Whether to throw an error if the function call is not detected\n        Returns:\n            cls (OpenAISchema): An instance of the class\n        \"\"\"\nmessage = completion['choices'][0]['message']\nif throw_error:\nassert \"function_call\" in message, \"No function call detected\"\nassert (\nmessage[\"function_call\"][\"name\"] == cls.openai_schema[\"name\"]\n), \"Function name does not match\"\nfunction_call = message[\"function_call\"]\narguments = json.loads(function_call[\"arguments\"], strict=False)\nreturn cls(**arguments)\n
      "},{"location":"openai_schema/#instructor.function_calls.OpenAISchema.openai_schema","title":"openai_schema classmethod property","text":"

      Return the schema in the format of OpenAI's schema as jsonschema

      Note

      Its important to add a docstring to describe how to best use this class, it will be included in the description attribute and be part of the prompt.

      Returns:

      Name Type Description model_json_schema dict

      A dictionary in the format of OpenAI's schema as jsonschema

      "},{"location":"openai_schema/#instructor.function_calls.OpenAISchema.from_response","title":"from_response(completion, throw_error=True) classmethod","text":"

      Execute the function from the response of an openai chat completion

      Parameters:

      Name Type Description Default completion ChatCompletion

      The response from an openai chat completion

      required throw_error bool

      Whether to throw an error if the function call is not detected

      True

      Returns:

      Name Type Description cls OpenAISchema

      An instance of the class

      Source code in instructor/function_calls.py
      @classmethod\ndef from_response(cls, completion, throw_error=True):\n\"\"\"Execute the function from the response of an openai chat completion\n    Parameters:\n        completion (openai.ChatCompletion): The response from an openai chat completion\n        throw_error (bool): Whether to throw an error if the function call is not detected\n    Returns:\n        cls (OpenAISchema): An instance of the class\n    \"\"\"\nmessage = completion['choices'][0]['message']\nif throw_error:\nassert \"function_call\" in message, \"No function call detected\"\nassert (\nmessage[\"function_call\"][\"name\"] == cls.openai_schema[\"name\"]\n), \"Function name does not match\"\nfunction_call = message[\"function_call\"]\narguments = json.loads(function_call[\"arguments\"], strict=False)\nreturn cls(**arguments)\n
      "},{"location":"openai_schema/#instructor.function_calls.openai_function","title":"openai_function","text":"

      Decorator to convert a function into an OpenAI function.

      This decorator will convert a function into an OpenAI function. The function will be validated using pydantic and the schema will be generated from the function signature.

      Example
      @openai_function\ndef sum(a: int, b: int) -> int:\nreturn a + b\ncompletion = openai.ChatCompletion.create(\n...\nmessages=[{\n\"content\": \"What is 1 + 1?\",\n\"role\": \"user\"\n}]\n)\nsum.from_response(completion)\n# 2\n
      Source code in instructor/function_calls.py
      class openai_function:\n\"\"\"\n    Decorator to convert a function into an OpenAI function.\n    This decorator will convert a function into an OpenAI function. The\n    function will be validated using pydantic and the schema will be\n    generated from the function signature.\n    Example:\n        ```python\n        @openai_function\n        def sum(a: int, b: int) -> int:\n            return a + b\n        completion = openai.ChatCompletion.create(\n            ...\n            messages=[{\n                \"content\": \"What is 1 + 1?\",\n                \"role\": \"user\"\n            }]\n        )\n        sum.from_response(completion)\n        # 2\n        ```\n    \"\"\"\ndef __init__(self, func: Callable) -> None:\nself.func = func\nself.validate_func = validate_arguments(func)\nparameters = self.validate_func.model.model_json_schema()\nparameters[\"properties\"] = {\nk: v\nfor k, v in parameters[\"properties\"].items()\nif k not in (\"v__duplicate_kwargs\", \"args\", \"kwargs\")\n}\nparameters[\"required\"] = sorted(\nk for k, v in parameters[\"properties\"].items() if not \"default\" in v\n)\n_remove_a_key(parameters, \"additionalProperties\")\n_remove_a_key(parameters, \"title\")\nself.openai_schema = {\n\"name\": self.func.__name__,\n\"description\": self.func.__doc__,\n\"parameters\": parameters,\n}\nself.model = self.validate_func.model\ndef __call__(self, *args: Any, **kwargs: Any) -> Any:\n@wraps(self.func)\ndef wrapper(*args, **kwargs):\nreturn self.validate_func(*args, **kwargs)\nreturn wrapper(*args, **kwargs)\ndef from_response(self, completion, throw_error=True):\n\"\"\"\n        Parse the response from OpenAI's API and return the function call\n        Parameters:\n            completion (openai.ChatCompletion): The response from OpenAI's API\n            throw_error (bool): Whether to throw an error if the response does not contain a function call\n        Returns:\n            result (any): result of the function call\n        \"\"\"\nmessage = completion['choices'][0]['message']\nif throw_error:\nassert \"function_call\" in message, \"No function call detected\"\nassert (\nmessage[\"function_call\"][\"name\"] == self.openai_schema[\"name\"]\n), \"Function name does not match\"\nfunction_call = message[\"function_call\"]\narguments = json.loads(function_call[\"arguments\"], strict=False)\nreturn self.validate_func(**arguments)\n
      "},{"location":"openai_schema/#instructor.function_calls.openai_function.from_response","title":"from_response(completion, throw_error=True)","text":"

      Parse the response from OpenAI's API and return the function call

      Parameters:

      Name Type Description Default completion ChatCompletion

      The response from OpenAI's API

      required throw_error bool

      Whether to throw an error if the response does not contain a function call

      True

      Returns:

      Name Type Description result any

      result of the function call

      Source code in instructor/function_calls.py
      def from_response(self, completion, throw_error=True):\n\"\"\"\n    Parse the response from OpenAI's API and return the function call\n    Parameters:\n        completion (openai.ChatCompletion): The response from OpenAI's API\n        throw_error (bool): Whether to throw an error if the response does not contain a function call\n    Returns:\n        result (any): result of the function call\n    \"\"\"\nmessage = completion['choices'][0]['message']\nif throw_error:\nassert \"function_call\" in message, \"No function call detected\"\nassert (\nmessage[\"function_call\"][\"name\"] == self.openai_schema[\"name\"]\n), \"Function name does not match\"\nfunction_call = message[\"function_call\"]\narguments = json.loads(function_call[\"arguments\"], strict=False)\nreturn self.validate_func(**arguments)\n
      "},{"location":"philosophy/","title":"Philosophy","text":"

      The philosophy behind this library is to provide a lightweight and flexible approach to leveraging language models (LLMs) to do structured output without imposing unnecessary dependencies or abstractions.

      By treating LLMs as just another function that returns a typed object, this library aims to remove the perceived complexity and make working with LLMs more approachable. It provides a flexible foundation for incorporating LLMs into your projects while allowing you to leverage the full power of Python to write your own code.

      1. Define a Schema class StructuredData(OpenAISchema):
      2. Encapsulate all your LLM logic into a function def extract(a) -> StructuredData:
      3. Define typed computations against your data with def compute(data: StructuredData):

      Here are some key points to understand:

      • Minimal Installation: This library is designed to be lightweight. If you prefer not to install the library and its two dependencies, you can simply extract the function_calls.py file from the code and incorporate it directly into your project. Own it. It is a single script.

      • Code as prompts: With both the DSL and the structured extraction we don't make a distinction between a code vs a prompt template. We believe the prompts that go into a LLM should be constructed and collocated with the code we need to execute. Prompts are created via docstrings, descriptions and functions that construct messages.

      • Writing Prompts: The library also includes an experimental prompt pipeline api. The DSL is a thin wrapper that aims to improve code readability by adding light abstraction around templates as messages. It provides a slightly more intuitive syntax for working with LLMs, making the prompting easier to read.

        • No Abstractions for Retrieval or Execution: The library does not impose any abstractions for retrieval or execution. Python code is considered to be great glue code, and there is no need to force the use of additional abstractions. You have the freedom to use any retrieval or execution mechanism that suits your needs.

        Roll your own

        If you want to do retrival simply make a class that extracts a query and implement a method that calls to get the data!

        import ...\nclass Search(OpenAISchema):\n\"Extract the search query from a question a query\"\nquery: str \ndef execute(self):\nreturn vectordb.query(self.query).to_string()\nreq = (\nChatCompletion(\"Query Extraction\")\n| TaggedMessage(content=\"can you tell me who is Jason Liu?\", tag=\"query\")\n| Search\n) \nquery = req.create() # Search(query=\"Jason Liu\")\nquery.execute()      # \"Jason Liu has a twitter account @jxnlco\"\n
        • Message as the Building Block: In the DSL, the fundamental building block is a message or an OpenAI schema call. Retrieval should be implemented as code that returns a message to be used in retrieval-augmented generation. This approach allows for flexibility and customization in handling different types of inputs and outputs.

        Roll your own, again

        If you want to do augmentation, you can simple make a function that returns the data in a message and | it back into the completion.

        import ...\nclass Response(OpenAISchema):\n\"Question answer pairs\"\nquestion: str\nanswer: str\ndef augment(query):\nreturn TaggedMessage(content=vectordb.query(self.query).to_string(), tag=\"data\")\nquery = \"does jason have social media?\"\nreq = (\nChatCompletion(\"Q/A System\")\n| augment(query=query)\n| UserMessage(f\"Use the data to answer the question: {query}\")\n| Response\n)\nresponse = req.create()\n# Response(\n#   question=\"does jason have social media?\", \n#   answer=\"yes, his twitter is @jxnlco\n# )\n

      Please note that the library is designed to be adaptable and open-ended, allowing you to customize and extend its functionality based on your specific requirements.

      If you have any further questions or ideas hit me up on twitter

      "},{"location":"writing-prompts/","title":"Writing prompts with ChatCompletion","text":"

      The ChatCompletion pipeline API provides a convenient way to build prompts with clear instructions and structure. It helps avoid the need to remember best practices for wording and prompt construction. This documentation will demonstrate an example pipeline and guide you through the process of using it.

      Our goals are to:

      1. Define some best practices with a light abstraction over a chat message
      2. Allow the pipeline to be intuitive and readable.
      3. Abstract the output shape and deserialization to better usability
      "},{"location":"writing-prompts/#example-pipeline","title":"Example Pipeline","text":"

      We will begin by defining a task to segment queries and add instructions using the prompt pipeline API.

      1. We want to define a search object to extract
      2. We want to extract multiple instances of such an object
      3. We want to define the pipeline with a set of instructions
      4. We want to easily call OpenAI and extract the data back out of the competion

      Applications

      Extracted a repeated task out of instructions is a fairly common task. Prompting tips have been to define the task clearly, model the output object and provide tips to the llm for better performance. Something like this can be used to power agents like Siri or Alexa in performing multiple tasks in one request. Read more

      "},{"location":"writing-prompts/#designing-the-schema","title":"Designing the Schema","text":"

      First, let's design the schema for our task. In this example, we will have a SearchQuery schema with a single field called query. The query field will represent a detailed, comprehensive, and specific query to be used for semantic search.

      from instructor import OpenAISchema, dsl\nfrom pydantic import Field\nclass SearchQuery(OpenAISchema):\nquery: str = Field(\n...,\ndescription=\"Detailed, comprehensive, and specific query to be used for semantic search\",\n)\nSearchResponse = dsl.MultiTask(\nsubtask_class=SearchQuery,\n)\n

      MultiTask

      To learn more about the MultiTask functionality, you can refer to the MultiTask documentation.

      "},{"location":"writing-prompts/#building-our-prompts","title":"Building our Prompts","text":"

      Next, let's write out prompt using the pipeline style. We will leverage the features provided by the ChatCompletion class and utilize the | operator to chain different components of our prompt together.

      task = (\ndsl.ChatCompletion(#(1)!\nname=\"Segmenting Search requests example\",\nmodel='gpt-3.5-turbo-0613,\nmax_token=1000) \n| dsl.SystemTask(task=\"Segment search results\") #(2)!\n| dsl.TaggedMessage(#(3)!\ncontent=\"can you send me the data about the video investment and the one about spot the dog?\",\ntag=\"query\") \n| dsl.TipsMessage(#(4)!\ntips=[\n\"Expand query to contain multiple forms of the same word (SSO -> Single Sign On)\",\n\"Use the title to explain what the query should return, but use the query to complete the search\",\n\"The query should be detailed, specific, and cast a wide net when possible\",\n]) \n| SearchResponse #(5)!\n)\n
      1. Define the completion object (consider this both task and prompt)
      2. SystemTask augments the task with \"You are a world class ... correctly complete the task: {task}\"
      3. TaggedMessage wraps content with <query></query> to set clear boundaries for the data you wish to process
      4. TipsMessages allows you to pass a list of strings as tips as a result we can potentially create this list dynamically
      5. Last step defines the output model you want to use to parse the results if no output model is defined we revert to the usual openai completion.

      The ChatCompletion class is responsible for model configuration, while the | operator allows us to construct the prompt in a readable manner. We can add Messages or OpenAISchema components to the prompt pipeline using |, and the ChatCompletion class will handle the prompt construction for us.

      In the above example, we:

      • Initialize a ChatCompletion object with the desired model and maximum token count.
      • Add a SystemTask component to segment search results.
      • Include a TaggedMessage component to provide a query with a specific tag.
      • Use a TipsMessage component to include some helpful tips related to the task.
      • Connect the SearchResponse schema to the pipeline.

      Lastly, we create the search_request using task.create(). The search_request object will be of type SearchResponse, and we can print it as a JSON object.

      Tip

      If you want to see the exact input sent to OpenAI, scroll to the bottom of the page.

      search_request = task.create()  # type: ignore\nassert isinstance(search_request, SearchResponse)\nprint(search_request.json(indent=2))\n

      The output will be a JSON object containing the segmented search queries.

      {\n\"tasks\": [\n{\n\"query\": \"data about video investment\"\n},\n{\n\"query\": \"data about spot the dog\"\n}\n]\n}\n
      "},{"location":"writing-prompts/#inspecting-the-api-call","title":"Inspecting the API Call","text":"

      To make it easy for you to understand what this api is doing we default only construct the kwargs for the chat completion call.

      print(task.kwargs)\n
      {\n\"messages\": [\n{\n\"role\": \"system\",\n\"content\": \"You are a world class state of the art algorithm capable of correctly completing the following task: `Segment search results`.\"\n},\n{\n\"role\": \"user\",\n\"content\": \"Consider the following data:\\n\\n<query>can you send me the data about the video investment and the one about spot the dog?</query>\"\n},\n{\n\"role\": \"user\",\n\"content\": \"Here are some tips to help you complete the task:\\n\\n* Expand query to contain multiple forms of the same word (SSO -> Single Sign On)\\n* Use the title to explain what the query should return, but use the query to complete the search\\n* The query should be detailed, specific, and cast a wide net when possible\"\n}\n],\n\"functions\": [\n{\n\"name\": \"MultiSearchQuery\",\n\"description\": \"Correctly segmented set of search queries\",\n\"parameters\": {\n\"type\": \"object\",\n\"properties\": {\n\"tasks\": {\n\"description\": \"Correctly segmented list of `SearchQuery` tasks\",\n\"type\": \"array\",\n\"items\": {\n\"$ref\": \"#/definitions/SearchQuery\"\n}\n}\n},\n\"definitions\": {\n\"SearchQuery\": {\n\"type\": \"object\",\n\"properties\": {\n\"query\": {\n\"description\": \"Detailed, comprehensive, and specific query to be used for semantic search\",\n\"type\": \"string\"\n}\n},\n\"required\": [\n\"query\"\n]\n}\n},\n\"required\": [\n\"tasks\"\n]\n}\n}\n],\n\"function_call\": {\n\"name\": \"MultiSearchQuery\"\n},\n\"max_tokens\": 1000,\n\"temperature\": 0.1,\n\"model\": \"gpt-3.5-turbo-0613\"\n}\n
      "},{"location":"examples/","title":"Function Calls by Example","text":"

      Welcome to the examples page. Here you will find emails that highlight a range of use cases, on how to use our code and examples demonstrating various features and functionalities.

      "},{"location":"examples/#quick-links","title":"Quick Links","text":"
      • Segmenting search requests into multiple search queries
      • One shot query planning
      • Using recursive schema
      • Exact citations using regex
      • Automated database extraction from text
      • Creating multiple file programs
      "},{"location":"examples/#details","title":"Details","text":"

      In this section, you will find examples demonstrating different aspects of our project's functionality.

      • Segmented Search: Learn how to perform segmented search using a multi task definition using function calling

      • One shot Query Planning: Explore how to plan and decompose a complex query into multiple subqueries in a single request.

      • Recursive Schemas: Understand how to work with recursive schemas, and also why flat is better than nested.

      • Exact Citations: Find out how to generate exact citations by using smart prompting and regular expressions

      • Automated Dataframe Extraction: Discover how to automate dataframe extraction to not only return a table, but possibly multiple tables.

      • Creating Multiple File Programs: Master how to create multiple file programs based on specification using function calling.

      Feel free to explore these examples to gain a better understanding of various patterns on how creative prompting, description, and structuring of OpenAISchema and unlock new capabilities.

      If you have any questions or need further assistance, please refer to the specific example documentation or reach out to our support team.

      Happy exploring!

      "},{"location":"examples/autodataframe/","title":"Example: Converting Text into Dataframes","text":"

      In this example, we'll demonstrate how to convert a text into dataframes using OpenAI Function Call. We will define the necessary data structures using Pydantic and show how to convert the text into dataframes.

      Motivation

      Often times when we parse data we have an opportunity to extract structured data, what if we could extract an arbitrary number of tables with arbitrary schemas? By pulling out dataframes we could write tables or .csv files and attach them to our retrieved data.

      "},{"location":"examples/autodataframe/#defining-the-data-structures","title":"Defining the Data Structures","text":"

      Let's start by defining the data structures required for this task: RowData, Dataframe, and Database.

      from instructor import OpenAISchema\nfrom pydantic import Field\nfrom typing import List, Any\nclass RowData(OpenAISchema):\nrow: List[Any] = Field(..., description=\"The values for each row\")\ncitation: str = Field(\n..., description=\"The citation for this row from the original source data\"\n)\nclass Dataframe(OpenAISchema):\n\"\"\"\n    Class representing a dataframe. This class is used to convert\n    data into a frame that can be used by pandas.\n    \"\"\"\nname: str = Field(..., description=\"The name of the dataframe\")\ndata: List[RowData] = Field(\n...,\ndescription=\"Correct rows of data aligned to column names, Nones are allowed\",\n)\ncolumns: List[str] = Field(\n...,\ndescription=\"Column names relevant from source data, should be in snake_case\",\n)\ndef to_pandas(self):\nimport pandas as pd\ncolumns = self.columns + [\"citation\"]\ndata = [row.row + [row.citation] for row in self.data]\nreturn pd.DataFrame(data=data, columns=columns)\nclass Database(OpenAISchema):\n\"\"\"\n    A set of correct named and defined tables as dataframes\n    \"\"\"\ntables: List[Dataframe] = Field(\n...,\ndescription=\"List of tables in the database\",\n)\n

      The RowData class represents a single row of data in the dataframe. It contains a row attribute for the values in each row and a citation attribute for the citation from the original source data.

      The Dataframe class represents a dataframe and consists of a name attribute, a list of RowData objects in the data attribute, and a list of column names in the columns attribute. It also provides a to_pandas method to convert the dataframe into a Pandas DataFrame.

      The Database class represents a set of tables in a database. It contains a list of Dataframe objects in the tables attribute.

      "},{"location":"examples/autodataframe/#using-the-prompt-pipeline","title":"Using the Prompt Pipeline","text":"

      To convert a text into dataframes, we'll use the Prompt Pipeline in OpenAI Function Call. We can define a function dataframe that takes a text as input and returns a Database object.

      import openai\ndef dataframe(data: str) -> Database:\ncompletion = openai.ChatCompletion.create(\nmodel=\"gpt-4-0613\",\ntemperature=0.1,\nfunctions=[Database.openai_schema],\nfunction_call={\"name\": Database.openai_schema[\"name\"]},\nmessages=[\n{\n\"role\": \"system\",\n\"content\": \"\"\"Map this data into a dataframe a\n                nd correctly define the correct columns and rows\"\"\",\n},\n{\n\"role\": \"user\",\n\"content\": f\"{data}\",\n},\n],\nmax_tokens=1000,\n)\nreturn Database.from_response(completion)\n

      The dataframe function takes a string data as input and creates a completion using the Prompt Pipeline. It prompts the model to map the data into a dataframe and define the correct columns and rows. The resulting completion is then converted into a Database object.

      "},{"location":"examples/autodataframe/#evaluating-an-example","title":"Evaluating an Example","text":"

      Let's evaluate the example by converting a text into dataframes using the dataframe function and print the resulting dataframes.

      dfs = dataframe(\"\"\"My name is John and I am 25 years old. I live in \nNew York and I like to play basketball. His name is \nMike and he is 30 years old. He lives in San Francisco \nand he likes to play baseball. Sarah is 20 years old \nand she lives in Los Angeles. She likes to play tennis.\nHer name is Mary and she is 35 years old. \nShe lives in Chicago.\nOn one team 'Tigers' the captain is John and there are 12 players.\nOn the other team 'Lions' the captain is Mike and there are 10 players.\n\"\"\")\nfor df in dfs.tables:\nprint(df.name)\nprint(df.to_pandas())\n

      The output will be:

      People\nName  Age           City Favorite Sport\n0   John   25       New York     Basketball\n1   Mike   30  San Francisco       Baseball\n2  Sarah   20    Los Angeles         Tennis\n3   Mary   35        Chicago           None\n\nTeams\nTeam Name Captain  Number of Players\n0    Tigers    John                 12\n1     Lions    Mike                 10\n
      "},{"location":"examples/exact_citations/","title":"Example: Answering Questions with Citations","text":"

      In this example, we'll demonstrate how to use OpenAI Function Call to ask an AI a question and get back an answer with correct citations. We'll define the necessary data structures using Pydantic and show how to retrieve the citations for each answer.

      Motivation

      When using AI models to answer questions, it's important to provide accurate and reliable information with appropriate citations. By including citations for each statement, we can ensure the information is backed by reliable sources and help readers verify the information themselves.

      "},{"location":"examples/exact_citations/#defining-the-data-structures","title":"Defining the Data Structures","text":"

      Let's start by defining the data structures required for this task: Fact and QuestionAnswer.

      Prompting as documentation

      Make sure to include detailed and useful docstrings and fields for your class definitions. Naming becomes very important since they are semantically meaningful in the prompt.

      • substring_quote performs better than quote since it suggests it should be a substring of the original content.
      • Notice that there are instructions on splitting facts in the docstring which will be used by OpenAI
      import openai\nfrom pydantic import Field, BaseModel\nfrom typing import List\nfrom instructor import OpenAISchema\nclass Fact(BaseModel):\n\"\"\"\n    Each fact has a body and a list of sources.\n    If there are multiple facts, make sure to break them apart such that each one only uses a set of sources that are relevant to it.\n    \"\"\"\nfact: str = Field(..., description=\"Body of the sentence as part of a response\")\nsubstring_quote: List[str] = Field(\n...,\ndescription=\"Each source should be a direct quote from the context, as a substring of the original content\",\n)\ndef _get_span(self, quote, context, errs=100):\nimport regex\nminor = quote\nmajor = context\nerrs_ = 0\ns = regex.search(f\"({minor}){{e<={errs_}}}\", major)\nwhile s is None and errs_ <= errs:\nerrs_ += 1\ns = regex.search(f\"({minor}){{e<={errs_}}}\", major)\nif s is not None:\nyield from s.spans()\ndef get_spans(self, context):\nfor quote in self.substring_quote:\nyield from self._get_span(quote, context)\nclass QuestionAnswer(OpenAISchema):\n\"\"\"\n    Class representing a question and its answer as a list of facts, where each fact should have a source.\n    Each sentence contains a body and a list of sources.\n    \"\"\"\nquestion: str = Field(..., description=\"Question that was asked\")\nanswer: List[Fact] = Field(\n...,\ndescription=\"Body of the answer, each fact should be its separate object with a body and a list of sources\",\n)\n

      The Fact class represents a single statement in the answer. It contains a fact attribute for the body of the sentence and a substring_quote attribute for the sources, which are direct quotes from the context.

      The QuestionAnswer class represents a question and its answer. It consists of a question attribute for the question asked and a list of Fact objects in the answer attribute.

      Embedding computation

      While it's not the best idea to get too crazy with adding 100 methods to your class collocating some computation is oftentimes useful, here we implement the substring search directly with the Fact class.

      "},{"location":"examples/exact_citations/#asking-ai-a-question","title":"Asking AI a Question","text":"

      To ask the AI a question and get back an answer with citations, we can define a function ask_ai that takes a question and context as input and returns a QuestionAnswer object.

      Prompting Tip: Expert system

      Expert prompting is a great trick to get results, it can be easily done by saying things like:

      • you are an world class expert that can correctly ...
      • you are jeff dean give me a code review ...
      def ask_ai(question: str, context: str) -> QuestionAnswer:\n\"\"\"\n    Function to ask AI a question and get back an Answer object.\n    but should be updated to use the actual method for making a request to the AI.\n    Args:\n        question (str): The question to ask the AI.\n        context (str): The context for the question.\n    Returns:\n        Answer: The Answer object.\n    \"\"\"\n# Making a request to the hypothetical 'openai' module\ncompletion = openai.ChatCompletion.create(\nmodel=\"gpt-3.5-turbo-0613\",\ntemperature=0.2,\nmax_tokens=1000,\nfunctions=[QuestionAnswer.openai_schema],\nfunction_call={\"name\": QuestionAnswer.openai_schema[\"name\"]},\nmessages=[\n{\n\"role\": \"system\",\n\"content\": f\"You are a world class algorithm to answer questions with correct and exact citations. \",\n},\n{\"role\": \"user\", \"content\": f\"Answer question using the following context\"},\n{\"role\": \"user\", \"content\": f\"{context}\"},\n{\"role\": \"user\", \"content\": f\"Question: {question}\"},\n{\n\"role\": \"user\",\n\"content\": f\"Tips: Make sure to cite your sources, and use the exact words from the context.\",\n},\n],\n)\n# Creating an Answer object from the completion response\nreturn QuestionAnswer.from_response(completion)\n

      The ask_ai function takes a string question and a string context as input. It makes a completion request to the AI model, providing the question and context as part of the prompt. The resulting completion is then converted into a QuestionAnswer object.

      "},{"location":"examples/exact_citations/#evaluating-an-example","title":"Evaluating an Example","text":"

      Let's evaluate the example by asking the AI a question and getting back an answer with citations. We'll ask the question \"What did the author do during college?\" with the given context.

      Highlight

      This just adds some color and captures the citation in <>

      def highlight(text, span):\nreturn (\n\"...\"\n+ text[span[0] - 50 : span[0]].replace(\"\\n\", \"\")\n+ \"\\033[91m\"\n+ \"<\"\n+ text[span[0] : span[1]].replace(\"\\n\", \"\")\n+ \"> \"\n+ \"\\033[0m\"\n+ text[span[1] : span[1] + 20].replace(\"\\n\", \"\")\n+ \"...\"\n)\n
      question = \"What did the author do during college?\"\ncontext = \"\"\"\nMy name is Jason Liu, and I grew up in Toronto Canada but I was born in China.\nI went to an arts high school but in university I studied Computational Mathematics and physics. \nAs part of coop I worked at many companies including Stitchfix, Facebook.\nI also started the Data Science club at the University of Waterloo and I was the president of the club for 2 years.\n\"\"\"\nanswer = ask_ai(question, context)\nprint(\"Question:\", question)\nprint()\nfor fact in answer.answer:\nprint(\"Statement:\", fact.fact)\nfor span in fact.get_spans(context):\nprint(\"Citation:\", highlight(context, span))\nprint()\n

      In this code snippet, we print the question and iterate over each fact in the answer. For each fact, we print the statement and highlight the corresponding citation in the context using the highlight function.

      Here is the expected output for the example:

      Question: What did the author do during college?\n\nStatement: The author studied Computational Mathematics and physics in university.\nCitation: ...s born in China.I went to an arts high school but <in university I studied Computational Mathematics and physics> . As part of coop I...\n\nStatement: The author started the Data Science club at the University of Waterloo and was the president of the club for 2 years.\nCitation: ...y companies including Stitchfix, Facebook.I also <started the Data Science club at the University of Waterloo>  and I was the presi...\nCitation: ... club at the University of Waterloo and I was the <president of the club for 2 years> ...\n

      The output includes the question, followed by each statement in the answer with its corresponding citation highlighted in the context.

      Feel free to try this code with different questions and contexts to see how the AI responds with accurate citations.

      "},{"location":"examples/gpt-engineer/","title":"Example: Creating Multiple Files Program","text":"

      This example shows how to create a multiple files program based on specifications by utilizing the OpenAI Function Call. We will define the necessary data structures using Pydantic and demonstrate how to convert a specification (prompt) into multiple files.

      Motivation

      Creating multiple file programs based on specifications is a challenging and rewarding skill that can help you build complex and scalable applications. With OpenAI Function Call, you can leverage the power of language models to generate an entire codebase and code snippets that match your specifications.

      "},{"location":"examples/gpt-engineer/#defining-the-data-structures","title":"Defining the Data Structures","text":"

      Let's start by defining the data structure of File and Program.

      from typing import List\nfrom pydantic import Field\nfrom instructor import OpenAISchema\nclass File(OpenAISchema):\n\"\"\"\n    Correctly named file with contents.\n    \"\"\"\nfile_name: str = Field(\n..., description=\"The name of the file including the extension\"\n)\nbody: str = Field(..., description=\"Correct contents of a file\")\ndef save(self):\nwith open(self.file_name, \"w\") as f:\nf.write(self.body)\nclass Program(OpenAISchema):\n\"\"\"\n    Set of files that represent a complete and correct program\n    \"\"\"\nfiles: List[File] = Field(..., description=\"List of files\")\n

      The File class represents a single file or script, and it contains a name attribute and body for the text content of the file. Notice that we added the save method to the File class. This method is used to writes the body of the file to disk using the name as path.

      The Program class represents a collection of files that form a complete and correct program. It contains a list of File objects in the files attribute.

      "},{"location":"examples/gpt-engineer/#calling-completions","title":"Calling Completions","text":"

      To create the files, we will use the base openai API. We can define a function that takes in a string and returns a Program object.

      import openai\ndef develop(data: str) -> Program:\ncompletion = openai.ChatCompletion.create(\nmodel=\"gpt-3.5-turbo-0613\",\ntemperature=0.1,\nfunctions=[Program.openai_schema],\nfunction_call={\"name\": Program.openai_schema[\"name\"]},\nmessages=[\n{\n\"role\": \"system\",\n\"content\": \"You are a world class programming AI capable of writing correct python scripts and modules. You will name files correct, include __init__.py files and write correct python code with correct imports.\",\n},\n{\n\"role\": \"user\",\n\"content\": data,\n},\n],\nmax_tokens=1000,\n)\nreturn Program.from_response(completion)\n
      "},{"location":"examples/gpt-engineer/#evaluating-an-example","title":"Evaluating an Example","text":"

      Let's evaluate the example by specifying the program to create and print the resulting files.

      program = develop(\n\"\"\"\n        Create a fastapi app with a readme.md file and a main.py file with \n        some basic math functions. the datamodels should use pydantic and \n        the main.py should use fastapi. the readme.md should have a title \n        and a description. The readme should contain some helpful infromation \n        and a curl example\"\"\"\n)\nfor file in program.files:\nprint(file.file_name)\nprint(\"-\")\nprint(file.body)\nprint(\"\\n\\n\\n\")\n

      The output will be:

      # readme.md\n-\n    # FastAPI App\n\n    This is a FastAPI app that provides some basic math functions.\n\n    ## Usage\n\n    To use this app, follow the instructions below:\n\n1. Install the required dependencies by running `pip install -r requirements.txt`.\n    2. Start the app by running `uvicorn main:app --reload`.\n    3. Open your browser and navigate to `http://localhost:8000/docs` to access the Swagger UI documentation.\n\n    ## Example\n\n    You can use the following curl command to test the `/add` endpoint:\n\n    ```bash\n$ curl -X POST -H \"Content-Type: application/json\" -d '{\"a\": 2, \"b\": 3}' http://localhost:8000/add\n    ```\n
      # main.py\n-\nfrom fastapi import FastAPI\nfrom pydantic import BaseModel\napp = FastAPI()\nclass Numbers(BaseModel):\na: int\nb: int\n@app.post('/add')\ndef add_numbers(numbers: Numbers):\nreturn {'result': numbers.a + numbers.b}\n@app.post('/subtract')\ndef subtract_numbers(numbers: Numbers):\nreturn {'result': numbers.a - numbers.b}\n@app.post('/multiply')\ndef multiply_numbers(numbers: Numbers):\nreturn {'result': numbers.a * numbers.b}\n@app.post('/divide')\ndef divide_numbers(numbers: Numbers):\nif numbers.b == 0:\nreturn {'error': 'Cannot divide by zero'}\nreturn {'result': numbers.a / numbers.b}\n
      # requirements.txt\n-\n    fastapi\n    uvicorn\n    pydantic\n

      "},{"location":"examples/gpt-engineer/#add-refactoring-capabilities","title":"Add Refactoring Capabilities","text":"

      This second part of the example shows how OpenAI API can be used to update the multiples files previously created, based on new specifications.

      In order to do that, we'll rely on the standard unidiff format.

      This will be our definition for a change in our code base:

      from pydantic import Field\nfrom instructor import OpenAISchema\nclass Diff(OpenAISchema):\n\"\"\"\n    Changes that must be correctly made in a program's code repository defined as a\n    complete diff (Unified Format) file which will be used to `patch` the repository.\n    Example:\n      --- /path/to/original timestamp\n      +++ /path/to/new  timestamp\n      @@ -1,3 +1,9 @@\n      +This is an important\n      +notice! It should\n      +therefore be located at\n      +the beginning of this\n      +document!\n      +\n       This part of the\n       document has stayed the\n       same from version to\n      @@ -8,13 +14,8 @@\n       compress the size of the\n       changes.\n      -This paragraph contains\n      -text that is outdated.\n      -It will be deleted in the\n      -near future.\n      -\n       It is important to spell\n      -check this dokument. On\n      +check this document. On\n       the other hand, a\n       misspelled word isn't\n       the end of the world.\n      @@ -22,3 +23,7 @@\n       this paragraph needs to\n       be changed. Things can\n       be added after it.\n      +\n      +This paragraph contains\n      +important new additions\n      +to this document.\n    \"\"\"\ndiff: str = Field(\n...,\ndescription=(\n\"Changes in a code repository correctly represented in 'diff' format, \"\n\"correctly escaped so it could be used in a JSON\"\n),\n)\n

      The diff class represents a diff file, with a set of changes that can be applied to our program using a tool like patch or Git.

      "},{"location":"examples/gpt-engineer/#calling-refactor-completions","title":"Calling Refactor Completions","text":"

      We'll define a function that will pass the program and the new specifications to the OpenAI API:

      import openai\nfrom generate import Program\ndef refactor(new_requirements: str, program: Program) -> Diff:\nprogram_description = \"\\n\".join(\n[f\"{code.file_name}\\n[[[\\n{code.body}\\n]]]\\n\" for code in program.files]\n)\ncompletion = openai.ChatCompletion.create(\n# model=\"gpt-3.5-turbo-0613\",\nmodel=\"gpt-4\",\ntemperature=0,\nfunctions=[Diff.openai_schema],\nfunction_call={\"name\": Diff.openai_schema[\"name\"]},\nmessages=[\n{\n\"role\": \"system\",\n\"content\": \"You are a world class programming AI capable of refactor \"\n\"existing python repositories. You will name files correct, include \"\n\"__init__.py files and write correct python code, with correct imports. \"\n\"You'll deliver your changes in valid 'diff' format so that they could \"\n\"be applied using the 'patch' command. \"\n\"Make sure you put the correct line numbers, \"\n\"and that all lines that must be changed are correctly marked.\",\n},\n{\n\"role\": \"user\",\n\"content\": new_requirements,\n},\n{\n\"role\": \"user\",\n\"content\": program_description,\n},\n],\nmax_tokens=1000,\n)\nreturn Diff.from_response(completion)\n

      Notice we're using here the version gpt-4 of the model, which is more powerful but, also, more expensive.

      "},{"location":"examples/gpt-engineer/#creating-an-example-refactoring","title":"Creating an Example Refactoring","text":"

      To tests these refactoring, we'll use the program object, generated in the first part of this example.

      changes = refactor(\nnew_requirements=\"Refactor this code to use flask instead.\",\nprogram=program,\n)\nprint(changes.diff)\n

      The output will be this:

      --- readme.md\n+++ readme.md\n@@ -1,9 +1,9 @@\n# FastAPI App\n\n-This is a FastAPI app that provides some basic math functions.\n+This is a Flask app that provides some basic math functions.\n## Usage\n\nTo use this app, follow the instructions below:\n\n1. Install the required dependencies by running `pip install -r requirements.txt`.\n-2. Start the app by running `uvicorn main:app --reload`.\n+2. Start the app by running `flask run`.\n3. Open your browser and navigate to `http://localhost:5000/docs` to access the Swagger UI documentation.\n\n## Example\n\nTo perform a basic math operation, you can use the following curl command:\n\n```bash\n-curl -X POST -H \"Content-Type: application/json\" -d '{\"operation\": \"add\", \"operands\": [2, 3]}' http://localhost:8000/calculate\n+curl -X POST -H \"Content-Type: application/json\" -d '{\"operation\": \"add\", \"operands\": [2, 3]}' http://localhost:5000/calculate\n```\n\n--- main.py\n+++ main.py\n@@ -1,29 +1,29 @@\n-from fastapi import FastAPI\n-from pydantic import BaseModel\n+from flask import Flask, request, jsonify\n-app = FastAPI()\n+app = Flask(__name__)\n-class Operation(BaseModel):\n-    operation: str\n-    operands: list\n+@app.route('/calculate', methods=['POST'])\n+def calculate():\n+    data = request.get_json()\n+    operation = data.get('operation')\n+    operands = data.get('operands')\n-@app.post('/calculate')\n-async def calculate(operation: Operation):\n-    if operation.operation == 'add':\n-        result = sum(operation.operands)\n-    elif operation.operation == 'subtract':\n-        result = operation.operands[0] - sum(operation.operands[1:])\n-    elif operation.operation == 'multiply':\n+    if operation == 'add':\n+        result = sum(operands)\n+    elif operation == 'subtract':\n+        result = operands[0] - sum(operands[1:])\n+    elif operation == 'multiply':\n        result = 1\n-        for operand in operation.operands:\n+        for operand in operands:\n            result *= operand\n-    elif operation.operation == 'divide':\n-        result = operation.operands[0]\n-        for operand in operation.operands[1:]:\n+    elif operation == 'divide':\n+        result = operands[0]\n+        for operand in operands[1:]:\n            result /= operand\n     else:\n         result = None\n-    return {'result': result}\n+    return jsonify({'result': result})\n--- requirements.txt\n+++ requirements.txt\n@@ -1,3 +1,2 @@\n-fastapi\n-uvicorn\n-pydantic\n+flask\n+flask-cors\n
      "},{"location":"examples/planning-tasks/","title":"Example: Planning and Executing a Query Plan","text":"

      This example demonstrates how to use the OpenAI Function Call ChatCompletion model to plan and execute a query plan in a question-answering system. By breaking down a complex question into smaller sub-questions with defined dependencies, the system can systematically gather the necessary information to answer the main question.

      Motivation

      The goal of this example is to showcase how query planning can be used to handle complex questions, facilitate iterative information gathering, automate workflows, and optimize processes. By leveraging the OpenAI Function Call model, you can design and execute a structured plan to find answers effectively.

      Use Cases:

      • Complex question answering
      • Iterative information gathering
      • Workflow automation
      • Process optimization

      With the OpenAI Function Call model, you can customize the planning process and integrate it into your specific application to meet your unique requirements.

      "},{"location":"examples/planning-tasks/#defining-the-structures","title":"Defining the Structures","text":"

      Let's define the necessary Pydantic models to represent the query plan and the queries.

      import enum\nfrom typing import List\nfrom pydantic import Field\nfrom instructor import OpenAISchema\nclass QueryType(str, enum.Enum):\n\"\"\"Enumeration representing the types of queries that can be asked to a question answer system.\"\"\"\nSINGLE_QUESTION = \"SINGLE\"\nMERGE_MULTIPLE_RESPONSES = \"MERGE_MULTIPLE_RESPONSES\"\nclass Query(OpenAISchema):\n\"\"\"Class representing a single question in a query plan.\"\"\"\nid: int = Field(..., description=\"Unique id of the query\")\nquestion: str = Field(\n...,\ndescription=\"Question asked using a question answering system\",\n)\ndependancies: List[int] = Field(\ndefault_factory=list,\ndescription=\"List of sub questions that need to be answered before asking this question\",\n)\nnode_type: QueryType = Field(\ndefault=QueryType.SINGLE_QUESTION,\ndescription=\"Type of question, either a single question or a multi-question merge\",\n)\nclass QueryPlan(OpenAISchema):\n\"\"\"Container class representing a tree of questions to ask a question answering system.\"\"\"\nquery_graph: List[Query] = Field(\n..., description=\"The query graph representing the plan\"\n)\ndef _dependencies(self, ids: List[int]) -> List[Query]:\n\"\"\"Returns the dependencies of a query given their ids.\"\"\"\nreturn [q for q in self.query_graph if q.id in ids]\n

      Graph Generation

      Notice that this example produces a flat list of items with dependencies that resemble a graph, while pydantic allows for recursive definitions, it's much easier and less confusing for the model to generate flat schemas rather than recursive schemas. If you want to see a recursive example, see recursive schemas

      "},{"location":"examples/planning-tasks/#planning-a-query-plan","title":"Planning a Query Plan","text":"

      Now, let's demonstrate how to plan and execute a query plan using the defined models and the OpenAI API.

      import asyncio\nimport openai\ndef query_planner(question: str) -> QueryPlan:\nPLANNING_MODEL = \"gpt-4-0613\"\nmessages = [\n{\n\"role\": \"system\",\n\"content\": \"You are a world class query planning algorithm capable ofbreaking apart questions into its dependency queries such that the answers can be used to inform the parent question. Do not answer the questions, simply provide a correct compute graph with good specific questions to ask and relevant dependencies. Before you call the function, think step-by-step to get a better understanding of the problem.\",\n},\n{\n\"role\": \"user\",\n\"content\": f\"Consider: {question}\\nGenerate the correct query plan.\",\n},\n]\ncompletion = openai.ChatCompletion.create(\nmodel=PLANNING_MODEL,\ntemperature=0,\nfunctions=[QueryPlan.openai_schema],\nfunction_call={\"name\": QueryPlan.openai_schema[\"name\"]},\nmessages=messages,\nmax_tokens=1000,\n)\nroot = QueryPlan.from_response(completion)\nreturn root\n
      plan = query_planner(\n    \"What is the difference in populations of Canada and the Jason's home country?\"\n)\nplan.dict()\n

      No RAG

      While we build the query plan in this example, we do not propose a method to actually answer the question. You can implement your own answer function that perhaps makes a retrival and calls openai for retrival augmented generation. That step would also make use of function calls but goes beyond the scope of this example.

      {'query_graph': [{'dependancies': [],\n'id': 1,\n'node_type': <QueryType.SINGLE_QUESTION: 'SINGLE'>,\n'question': \"Identify Jason's home country\"},\n{'dependancies': [],\n'id': 2,\n'node_type': <QueryType.SINGLE_QUESTION: 'SINGLE'>,\n'question': 'Find the population of Canada'},\n{'dependancies': [1],\n'id': 3,\n'node_type': <QueryType.SINGLE_QUESTION: 'SINGLE'>,\n'question': \"Find the population of Jason's home country\"},\n{'dependancies': [2, 3],\n'id': 4,\n'node_type': <QueryType.SINGLE_QUESTION: 'SINGLE'>,\n'question': 'Calculate the difference in populations between '\n\"Canada and Jason's home country\"}]} \n

      In the above code, we define a query_planner function that takes a question as input and generates a query plan using the OpenAI API.

      "},{"location":"examples/planning-tasks/#conclusion","title":"Conclusion","text":"

      In this example, we demonstrated how to use the OpenAI Function Call ChatCompletion model to plan and execute a query plan using a question-answering system. We defined the necessary structures using Pydantic, created a query planner function.

      If you want to see multiple versions of this style of code, please visit:

      1. query planning example
      2. task planning with topo sort

      Feel free to modify the code to fit your specific use case and explore other possibilities of using the OpenAI Function Call model to plan and execute complex workflows.

      "},{"location":"examples/recursive/","title":"Example: Parsing a Directory Tree","text":"

      In this example, we will demonstrate how define and use a recursive class definition to convert a string representing a directory tree into a filesystem structure using OpenAI's function call api. We will define the necessary structures using Pydantic, create a function to parse the tree, and provide an example of how to use it.

      "},{"location":"examples/recursive/#defining-the-structures","title":"Defining the Structures","text":"

      We will use Pydantic to define the necessary data structures representing the directory tree and its nodes. We have two classes, Node and DirectoryTree, which are used to model individual nodes and the entire directory tree, respectively.

      Flat is better than nested

      While it's easier to model things as nested, returning flat items with dependencies tends to yield better results. For a flat example, check out planning tasks where we model a query plan as a dag.

      import enum\nfrom typing import List\nfrom pydantic import Field\nfrom instructor import OpenAISchema\nclass NodeType(str, enum.Enum):\n\"\"\"Enumeration representing the types of nodes in a filesystem.\"\"\"\nFILE = \"file\"\nFOLDER = \"folder\"\nclass Node(OpenAISchema):\n\"\"\"\n    Class representing a single node in a filesystem. Can be either a file or a folder.\n    Note that a file cannot have children, but a folder can.\n    Args:\n        name (str): The name of the node.\n        children (List[Node]): The list of child nodes (if any).\n        node_type (NodeType): The type of the node, either a file or a folder.\n    Methods:\n        print_paths: Prints the path of the node and its children.\n    \"\"\"\nname: str = Field(..., description=\"Name of the folder\")\nchildren: List[\"Node\"] = Field(\ndefault_factory=list,\ndescription=\"List of children nodes, only applicable for folders, files cannot have children\",\n)\nnode_type: NodeType = Field(\ndefault=NodeType.FILE,\ndescription=\"Either a file or folder, use the name to determine which it could be\",\n)\ndef print_paths(self, parent_path=\"\"):\n\"\"\"Prints the path of the node and its children.\"\"\"\nif self.node_type == NodeType.FOLDER:\npath = f\"{parent_path}/{self.name}\" if parent_path != \"\" else self.name\nprint(path, self.node_type)\nif self.children is not None:\nfor child in self.children:\nchild.print_paths(path)\nelse:\nprint(f\"{parent_path}/{self.name}\", self.node_type)\nclass DirectoryTree(OpenAISchema):\n\"\"\"\n    Container class representing a directory tree.\n    Args:\n        root (Node): The root node of the tree.\n    Methods:\n        print_paths: Prints the paths of the root node and its children.\n    \"\"\"\nroot: Node = Field(..., description=\"Root folder of the directory tree\")\ndef print_paths(self):\n\"\"\"Prints the paths of the root node and its children.\"\"\"\nself.root.print_paths()\nNode.update_forward_refs()\nDirectoryTree.update_forward_refs()\n

      The Node class represents a single node in the directory tree. It has a name, a list of children nodes (applicable only to folders), and a node type (either a file or a folder). The print_paths method can be used to print the path of the node and its children.

      The DirectoryTree class represents the entire directory tree. It has a single attribute, root, which is the root node of the tree. The print_paths method can be used to print the paths of the root node and its children.

      "},{"location":"examples/recursive/#parsing-the-tree","title":"Parsing the Tree","text":"

      We define a function parse_tree_to_filesystem to convert a string representing a directory tree into a filesystem structure using OpenAI.

      import openai\ndef parse_tree_to_filesystem(data: str) -> DirectoryTree:\n\"\"\"\n    Convert a string representing a directory tree into a filesystem structure\n    using OpenAI's GPT-3 model.\n    Args:\n        data (str): The string to convert into a filesystem.\n    Returns:\n        DirectoryTree: The directory tree representing the filesystem.\n    \"\"\"\ncompletion = openai.ChatCompletion.create(\nmodel=\"gpt-3.5-turbo-0613\",\ntemperature=0.2,\nfunctions=[DirectoryTree.openai_schema],\nfunction_call={\"name\": DirectoryTree.openai_schema[\"name\"]},\nmessages=[\n{\n\"role\": \"system\",\n\"content\": \"You are a perfect file system parsing algorithm. You are given a string representing a directory tree. You must return the correct filesystem structure.\",\n},\n{\n\"role\": \"user\",\n\"content\": f\"Consider the data below:\\n{data} and return the correctly labeled filesystem\",\n},\n],\nmax_tokens=1000,\n)\nroot = DirectoryTree.from_response(completion)\nreturn root\n

      The parse_tree_to_filesystem function takes a string data representing the directory tree and returns a DirectoryTree object representing the filesystem structure. It uses the OpenAI Chat API to complete the prompt and extract the directory tree.

      "},{"location":"examples/recursive/#example-usage","title":"Example Usage","text":"

      Let's demonstrate how to use the parse_tree_to_filesystem

      function with an example:

      root = parse_tree_to_filesystem(\n\"\"\"\n    root\n    \u251c\u2500\u2500 folder1\n    \u2502   \u251c\u2500\u2500 file1.txt\n    \u2502   \u2514\u2500\u2500 file2.txt\n    \u2514\u2500\u2500 folder2\n        \u251c\u2500\u2500 file3.txt\n        \u2514\u2500\u2500 subfolder1\n            \u2514\u2500\u2500 file4.txt\n    \"\"\"\n)\nroot.print_paths()\n

      In this example, we call parse_tree_to_filesystem with a string representing a directory tree.

      After parsing the string into a DirectoryTree object, we call root.print_paths() to print the paths of the root node and its children. The output of this example will be:

      root                               NodeType.FOLDER\nroot/folder1                       NodeType.FOLDER\nroot/folder1/file1.txt             NodeType.FILE\nroot/folder1/file2.txt             NodeType.FILE\nroot/folder2                       NodeType.FOLDER\nroot/folder2/file3.txt             NodeType.FILE\nroot/folder2/subfolder1            NodeType.FOLDER\nroot/folder2/subfolder1/file4.txt  NodeType.FILE\n

      This demonstrates how to use OpenAI's GPT-3 model to parse a string representing a directory tree and obtain the correct filesystem structure.

      I hope this example helps you understand how to leverage OpenAI Function Call for parsing recursive trees. If you have any further questions, feel free to ask!

      "},{"location":"examples/search/","title":"Example: Segmenting Search Queries","text":"

      In this example, we will demonstrate how to leverage the MultiTask and enum.Enum features of OpenAI Function Call to segment search queries. We will define the necessary structures using Pydantic and demonstrate how segment queries into multiple sub queries and execute them in parallel with asyncio.

      Motivation

      Extracting a list of tasks from text is a common use case for leveraging language models. This pattern can be applied to various applications, such as virtual assistants like Siri or Alexa, where understanding user intent and breaking down requests into actionable tasks is crucial. In this example, we will demonstrate how to use OpenAI Function Call to segment search queries and execute them in parallel.

      "},{"location":"examples/search/#defining-the-structures","title":"Defining the Structures","text":"

      Let's model the problem as breaking down a search request into a list of search queries. We will use an enum to represent different types of searches and take advantage of Python objects to add additional query logic.

      import enum\nfrom pydantic import Field\nfrom instructor import OpenAISchema\nclass SearchType(str, enum.Enum):\n\"\"\"Enumeration representing the types of searches that can be performed.\"\"\"\nVIDEO = \"video\"\nEMAIL = \"email\"\nclass Search(OpenAISchema):\n\"\"\"\n    Class representing a single search query.\n    \"\"\"\ntitle: str = Field(..., description=\"Title of the request\")\nquery: str = Field(..., description=\"Query to search for relevant content\")\ntype: SearchType = Field(..., description=\"Type of search\")\nasync def execute(self):\nprint(f\"Searching for `{self.title}` with query `{self.query}` using `{self.type}`\")\n

      Notice that we have added the execute method to the Search class. This method can be used to route the search query based on the enum type. You can add logic specific to each search type in the execute method.

      Next, let's define a class to represent multiple search queries.

      from typing import List\nclass MultiSearch(OpenAISchema):\n\"Correctly segmented set of search results\"\ntasks: List[Search]\n

      The MultiSearch class has a single attribute, tasks, which is a list of Search objects.

      This pattern is so common that we've added a helper function MultiTask to makes this simpler

      from instructor.dsl import MultiTask\nMultiSearch = MultiTask(Search)\n
      "},{"location":"examples/search/#calling-completions","title":"Calling Completions","text":"

      To segment a search query, we will use the base openai api. We can define a function that takes a string and returns segmented search queries using the MultiSearch class.

      import openai\ndef segment(data: str) -> MultiSearch:\ncompletion = openai.ChatCompletion.create(\nmodel=\"gpt-3.5-turbo-0613\",\ntemperature=0.1,\nfunctions=[MultiSearch.openai_schema],\nfunction_call={\"name\": MultiSearch.openai_schema[\"name\"]},\nmessages=[\n{\n\"role\": \"user\",\n\"content\": f\"Consider the data below: '\\n{data}' and segment it into multiple search queries\",\n},\n],\nmax_tokens=1000,\n)\nreturn MultiSearch.from_response(completion)\n

      The segment function takes a string data and creates a completion. It prompts the model to segment the data into multiple search queries and returns the result as a MultiSearch object.

      "},{"location":"examples/search/#evaluating-an-example","title":"Evaluating an Example","text":"

      Let's evaluate an example by segmenting a search query and executing the segmented queries.

      import asyncio\nqueries = segment(\"Please send me the video from last week about the investment case study and also documents about your GDPR policy?\")\nasync def execute_queries(queries: Multisearch):\nawait asyncio.gather(*[q.execute() for q in queries.tasks])\nloop = asyncio.get_event_loop()\nloop.run_until_complete(execute_queries())\nloop.close()\n

      In this example, we use the segment function to segment the search query. We then use asyncio to asynchronously execute the queries using the execute method defined in the Search class.

      The output will be:

      Searching for `Please send me the video from last week about the investment case study` with query `Please send me the video from last week about the investment case study` using `SearchType.VIDEO`\nSearching for `also documents about your GDPR policy?` with query `also documents about your GDPR policy?` using `SearchType.EMAIL`\n
      "}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 000000000..af9c87a0c --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,73 @@ + + + + https://jxnl.github.io/instructor/ + 2023-08-20 + daily + + + https://jxnl.github.io/instructor/api_multitask/ + 2023-08-20 + daily + + + https://jxnl.github.io/instructor/chat-completion/ + 2023-08-20 + daily + + + https://jxnl.github.io/instructor/multitask/ + 2023-08-20 + daily + + + https://jxnl.github.io/instructor/openai_schema/ + 2023-08-20 + daily + + + https://jxnl.github.io/instructor/philosophy/ + 2023-08-20 + daily + + + https://jxnl.github.io/instructor/writing-prompts/ + 2023-08-20 + daily + + + https://jxnl.github.io/instructor/examples/ + 2023-08-20 + daily + + + https://jxnl.github.io/instructor/examples/autodataframe/ + 2023-08-20 + daily + + + https://jxnl.github.io/instructor/examples/exact_citations/ + 2023-08-20 + daily + + + https://jxnl.github.io/instructor/examples/gpt-engineer/ + 2023-08-20 + daily + + + https://jxnl.github.io/instructor/examples/planning-tasks/ + 2023-08-20 + daily + + + https://jxnl.github.io/instructor/examples/recursive/ + 2023-08-20 + daily + + + https://jxnl.github.io/instructor/examples/search/ + 2023-08-20 + daily + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..15bf68fd872e956afb6cb00235226ef24b85b1ba GIT binary patch literal 343 zcmV-d0jT~TiwFqCx8Y<0|8r?{Wo=<_E_iKh0M(YkZo?o9K=1vEDEEY{yL3~U-u4CC zx$=k`SP3xfH0|FH+G^@~(xl)E#xmBEu`Rc|^Jt0_2GY)M%cr_23$)Vp+78?Drq%O*X5hiv$FdPDmm<4fEB=2P$0BKI;k>$a2g?7*uF=PSk p4OpA{EsfbcavV@jaXmTZQN@H1r22o<>k(J7?g!rkh6ut5003&Bt8)MV literal 0 HcmV?d00001 diff --git a/writing-prompts/index.html b/writing-prompts/index.html new file mode 100644 index 000000000..d1d2a2f5f --- /dev/null +++ b/writing-prompts/index.html @@ -0,0 +1,1034 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Introduction: Writing Prompts - Instructor (openai_function_call) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + +
      + + + + + + + +
      + +
      + + + + +
      +
      + + + +
      +
      +
      + + + + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      +
      + + + +
      +
      + + + + + + + +

      Writing prompts with ChatCompletion

      +

      The ChatCompletion pipeline API provides a convenient way to build prompts with clear instructions and structure. It helps avoid the need to remember best practices for wording and prompt construction. This documentation will demonstrate an example pipeline and guide you through the process of using it.

      +

      Our goals are to:

      +
        +
      1. Define some best practices with a light abstraction over a chat message
      2. +
      3. Allow the pipeline to be intuitive and readable.
      4. +
      5. Abstract the output shape and deserialization to better usability
      6. +
      +

      Example Pipeline

      +

      We will begin by defining a task to segment queries and add instructions using the prompt pipeline API.

      +
        +
      1. We want to define a search object to extract
      2. +
      3. We want to extract multiple instances of such an object
      4. +
      5. We want to define the pipeline with a set of instructions
      6. +
      7. We want to easily call OpenAI and extract the data back out of the competion
      8. +
      +
      +

      Applications

      +

      Extracted a repeated task out of instructions is a fairly common task. +Prompting tips have been to define the task clearly, model the output object and provide tips to the llm for better performance. Something like this can be used to power agents like Siri or Alexa in performing multiple tasks in one request. Read more

      +
      +

      Designing the Schema

      +

      First, let's design the schema for our task. In this example, we will have a SearchQuery schema with a single field called query. The query field will represent a detailed, comprehensive, and specific query to be used for semantic search.

      +
      from instructor import OpenAISchema, dsl
      +from pydantic import Field
      +
      +class SearchQuery(OpenAISchema):
      +    query: str = Field(
      +        ...,
      +        description="Detailed, comprehensive, and specific query to be used for semantic search",
      +    )
      +
      +SearchResponse = dsl.MultiTask(
      +    subtask_class=SearchQuery,
      +)
      +
      +
      +

      MultiTask

      +

      To learn more about the MultiTask functionality, you can refer to the MultiTask documentation.

      +
      +

      Building our Prompts

      +

      Next, let's write out prompt using the pipeline style. We will leverage the features provided by the ChatCompletion class and utilize the | operator to chain different components of our prompt together.

      +
      task = (
      +    dsl.ChatCompletion(#(1)!
      +        name="Segmenting Search requests example",
      +        model='gpt-3.5-turbo-0613,
      +        max_token=1000) 
      +    | dsl.SystemTask(task="Segment search results") #(2)!
      +    | dsl.TaggedMessage(#(3)!
      +        content="can you send me the data about the video investment and the one about spot the dog?",
      +        tag="query") 
      +    | dsl.TipsMessage(#(4)!
      +        tips=[
      +            "Expand query to contain multiple forms of the same word (SSO -> Single Sign On)",
      +            "Use the title to explain what the query should return, but use the query to complete the search",
      +            "The query should be detailed, specific, and cast a wide net when possible",
      +        ]) 
      +    | SearchResponse #(5)!
      +)
      +
      +
        +
      1. Define the completion object (consider this both task and prompt)
      2. +
      3. SystemTask augments the task with "You are a world class ... correctly complete the task: {task}"
      4. +
      5. TaggedMessage wraps content with <query></query> to set clear boundaries for the data you wish to process
      6. +
      7. TipsMessages allows you to pass a list of strings as tips as a result we can potentially create this list dynamically
      8. +
      9. Last step defines the output model you want to use to parse the results if no output model is defined we revert to the usual openai completion.
      10. +
      +

      The ChatCompletion class is responsible for model configuration, while the | operator allows us to construct the prompt in a readable manner. We can add Messages or OpenAISchema components to the prompt pipeline using |, and the ChatCompletion class will handle the prompt construction for us.

      +

      In the above example, we:

      +
        +
      • Initialize a ChatCompletion object with the desired model and maximum token count.
      • +
      • Add a SystemTask component to segment search results.
      • +
      • Include a TaggedMessage component to provide a query with a specific tag.
      • +
      • Use a TipsMessage component to include some helpful tips related to the task.
      • +
      • Connect the SearchResponse schema to the pipeline.
      • +
      +

      Lastly, we create the search_request using task.create(). The search_request object will be of type SearchResponse, and we can print it as a JSON object.

      +
      +

      Tip

      +

      If you want to see the exact input sent to OpenAI, scroll to the bottom of the page.

      +
      +
      search_request = task.create()  # type: ignore
      +assert isinstance(search_request, SearchResponse)
      +print(search_request.json(indent=2))
      +
      +

      The output will be a JSON object containing the segmented search queries.

      +
      {
      +  "tasks": [
      +    {
      +      "query": "data about video investment"
      +    },
      +    {
      +      "query": "data about spot the dog"
      +    }
      +  ]
      +}
      +
      +

      Inspecting the API Call

      +

      To make it easy for you to understand what this api is doing we default only construct the kwargs for the chat completion call.

      +
      print(task.kwargs)
      +
      +
      {
      + "messages": [
      +  {
      +   "role": "system",
      +   "content": "You are a world class state of the art algorithm capable of correctly completing the following task: `Segment search results`."
      +  },
      +  {
      +   "role": "user",
      +   "content": "Consider the following data:\n\n<query>can you send me the data about the video investment and the one about spot the dog?</query>"
      +  },
      +  {
      +   "role": "user",
      +   "content": "Here are some tips to help you complete the task:\n\n* Expand query to contain multiple forms of the same word (SSO -> Single Sign On)\n* Use the title to explain what the query should return, but use the query to complete the search\n* The query should be detailed, specific, and cast a wide net when possible"
      +  }
      + ],
      + "functions": [
      +  {
      +   "name": "MultiSearchQuery",
      +   "description": "Correctly segmented set of search queries",
      +   "parameters": {
      +    "type": "object",
      +    "properties": {
      +     "tasks": {
      +      "description": "Correctly segmented list of `SearchQuery` tasks",
      +      "type": "array",
      +      "items": {
      +       "$ref": "#/definitions/SearchQuery"
      +      }
      +     }
      +    },
      +    "definitions": {
      +     "SearchQuery": {
      +      "type": "object",
      +      "properties": {
      +       "query": {
      +        "description": "Detailed, comprehensive, and specific query to be used for semantic search",
      +        "type": "string"
      +       }
      +      },
      +      "required": [
      +       "query"
      +      ]
      +     }
      +    },
      +    "required": [
      +     "tasks"
      +    ]
      +   }
      +  }
      + ],
      + "function_call": {
      +  "name": "MultiSearchQuery"
      + },
      + "max_tokens": 1000,
      + "temperature": 0.1,
      + "model": "gpt-3.5-turbo-0613"
      +}
      +
      + + + + + + + + +
      +
      + + +
      + +
      + + + +
      +
      +
      +
      + + + + + + + + + \ No newline at end of file