From 5ffd3e06dfec39b2886e8ace32889d3d32b46a38 Mon Sep 17 00:00:00 2001 From: <> Date: Wed, 16 Aug 2023 17:26:11 +0000 Subject: [PATCH] Deployed 9443668 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 -> 31094 bytes assets/images/social/chat-completion.png | Bin 0 -> 39402 bytes .../images/social/examples/autodataframe.png | Bin 0 -> 47322 bytes .../social/examples/exact_citations.png | Bin 0 -> 35000 bytes .../images/social/examples/gpt-engineer.png | Bin 0 -> 46014 bytes assets/images/social/examples/index.png | Bin 0 -> 31173 bytes .../images/social/examples/planning-tasks.png | Bin 0 -> 42204 bytes assets/images/social/examples/recursive.png | Bin 0 -> 37899 bytes assets/images/social/examples/search.png | Bin 0 -> 36719 bytes assets/images/social/index.png | Bin 0 -> 35717 bytes assets/images/social/multitask.png | Bin 0 -> 31094 bytes assets/images/social/openai_schema.png | Bin 0 -> 37380 bytes assets/images/social/philosophy.png | Bin 0 -> 31930 bytes assets/images/social/writing-prompts.png | Bin 0 -> 43561 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 | 1222 +++ multitask/index.html | 928 +++ objects.inv | Bin 0 -> 462 bytes openai_schema/index.html | 1711 +++++ philosophy/index.html | 853 +++ search/search_index.json | 1 + sitemap.xml | 73 + sitemap.xml.gz | Bin 0 -> 341 bytes writing-prompts/index.html | 1034 +++ 78 files changed, 25245 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..1d4fadd01 --- /dev/null +++ b/404.html @@ -0,0 +1,676 @@ + + + + + + + + + + + + + + + + + + + + OpenAI Function Call Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ +

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..c445d678d --- /dev/null +++ b/api_multitask/index.html @@ -0,0 +1,1117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + MultiTask - OpenAI Function Call Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 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 openai_function_call/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..cf97d45b22025f00137229c59719b50182c2f44a GIT binary patch literal 31094 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 QqN$@OuX;WAn(34O1`3lb^8f$< 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..dfc10bdbcfde7725249f9c5c6e12f1a44672f2ed GIT binary patch literal 47322 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

IiRSgj)z#kJ%Zq2T%{xB%5T z1~voc0NWZqBcjbkPjR^jC9ZzGyM~D02s+ooGuIEPvF7vZ;FTHFp-#xSx;l~@45#3Y zANvg$+$xVfDj-AEn47GIlA5i3;wlpn3`a7FRIkQlAUA22m7>S$Xtwq(YRqk9KkK`} zOB;O_?q+6|dpRXWJS>FBTmxZI-~em8{oER(4M}7K;kQjbR$5OcowrexGW-r$Tg7W< z7R+7v`4kLS%*QjWu)*1vVF^-{s81D1ePISTeDOQGjI412FE132gcC-ss=7b=Na9Fi=-$j%#~d)E8mzSg?daw)@{c^rFe+ix#$F01?ro(QBm3fjRw&_atu z=x1g`A({yWV*$kK0jC9Bt+^H68R#;imKU6{q=5qh4tYgO;PIJydywM96ki?;TdN;| zIlIz2->j#^mi4NI3TSh`G`tKAJ(_TKry(kX2?=m3IB2uRe?-TOJ(8T-Eq7pIA!#`8 zHuUd!G*z>p?#{w&awFP)=*J;&8(XR4vNW6q5}(bcfw2y8h&*cW-|JPQqS77Ty(ASB z{q)jT?a-f3EYU6_qY@*DgFW3MeOpL#3!*3dqO-c=Z`EmR5L%6-dPb`x|W_sQRJTNJ*LT%*5dnqK!2tCJWsyg?V$`PfKG9gYAW$tYNaPQ>c&?x+32aeMg^ z+f^3P*g;DrkX2wBpq>2i&zqdhE3Bka&k3^$k#Q7_yOpVR)~}I)qA@6wsHk=I?&d@G zanJ&0ZJk10xecXt-)88Cn`Zh^6UFjvb<@qw1Fr38oo2y4z6XqpZ}{N*1vw?)s%Z^z zGXfneiZUFa>!GK9`tWpWM=oa5yNQL=z(=Txo9vn_%5+|;R#@sVkri2D+pN{k>S-4< z6m?h+#?E&l#1HLy#648&Y^Kck1KIGV%J=1Mn#8gMwChIJCgC%3&$k#`Se5EOK#Q3F z@c`BD)_TyQE|C`di=h$XF3iNFZeG&EYt{MLtsQ7FKS|fIP#&$S&jY#3Q&zxmAw^4A zEt2_%dT~-a<`yxq*&))?t#nlY{tR84l)!aywL-spgssp`UN+n+-k`A9vBd?B!z<^m z7jSXR`ybGkvJ>87_bRRw`?c;+*GP;d(#R!H5+*Atnlf zLqr;EK~drCKXRAl1nMf}C%AI?af%l%iriJcm{dgh^cTBXxvN7gQkkOx6?f1=&`a^ZQ_{j>9E^JJWxlT-LL7aUS5#FpNbQ+HA8ntFDVxY~hn z6|3P8UCKb-0Q*iwRa@lhUOQ^gvOM9fJ6J_^hAVea%(6_}#Y#zSgFCeIG6-FIEHO4Nej@ccAhlzJ^1(psU)s^m*M%U%*Xe zGMqs%T>F`CcWr5Q1Tm|(2e5uy0hd%8`O1oEq(3*v%3NpE@uVNiEWO>fNfL4n@)*H# zYx5F(>?O6;qH`&zMn4urazR?)vvBM7ccsj8p@=;k&DS{Rq9!6=)SZZz+ZRNxPo+5E ztKStHN#9EiLh9(q%0-aKdvGCH`sLdTY$`-p9Mj($bZqWlAe&65@eFg@ph133c6&4xX2vOvaSbZ5UNV7kz5h) zTgAr4CIXH5bJ*21W)_$N;+wy`#5Xp)dU#WFa_WKuM{aJe6lbryK7Wx@mRAd!<_|4D zS>i#7Cgm+x5?BhJ5h%a*M;zTBCCV)c4h61rBZWavV0So~eYqdX^2NAYl4kbRD2j!B zvv(_^%D*a7ncEa7!%wVEO&`ozdv}nuf_4#6asG8IzhiO||0i<~=fJHq3=kSU_WpH9 z;GBfs8Mm+`4uoXFGNqflrq zGB!*{^#4~yM72SyVI5>;UVw+@mFsd`WehDoxEo=pG+^K@h2kF~&G_ZF(mfT3KmlEJ z3VZ=b0u7_&^O_8-r#^Rfo*A^1w!TXrF2Gfrr=Sgxv$>`Mub~xOC?FI9PJM`n9hyI0 zzvwfEH*(yspS{zvJS@OJ0Bd&=C`sl9^%KE~_!m=#t4uG}c!{tJIebsM==LZ#ASfpg z_-Acd6k!LRszX{0GJdYhBD~@9!(2s%PRW??lmv^f&A#T{W#{QwPNaHhKDsYk#Kp_2 zakl=pxwV<9Rg64%xWV3#NT>b12p~{>LQFOTI91xQLi>+U_5gVcv&dz&os`DQ0v8^n z%RYYVzb{On7ip(AU91F10<@Xcz_kKiW2%jUk?v6Lyff&hExSk<14N! zKh6oC&d4lH&r7*v`q}PqbROgn#tOUUgDlf0fE!UjO|k zFE8Uo@-7;C8^DSo9s=(@U(-C*J_d(mA?jDtG|l>xA>@WR2aI+mD$VgT4;*Pb_ku>@NPS@pds3WNPOf;{;p|1A^INSRPr=2 zUu*wgjrJZ82u?kW=*u!;kBkSC1&BHRO1Zs`Lh1|7gPD$N?ZlZI(b`(7>Y&Ko6FoCy zg@~?jHOv!pnQFLA<_X6B*0G-{Y%iKYdvuB3pRDD4LDo@};D8*N7nH{;WMrPbzw<}gN2zJ>2=#;IHucP3}=2p zy$UySB}Pa{4%UC@vF==-Y(@j3WR{Sgz{mmy+i=~^4t#TQsVnvU_E)l9`8Imos}STF zh!SgarFpPoyeR=>qwDDVQ_0rlj(MO(#RSRiMygCSb^EyTXf@#WK>JJGBsMA?8b_7L zLRp)7V&ST2Z7mXVN*Zpi-;PCWgzRl;l$qg6O3-Io|2^=J`kn($@&&x*^P9M5ZBbDv zaa8L>AW*Er_w5EeLRb1C*zM5ty{3Rk0gd&E6QG;tx&N9zwDG~>rR{@o-=%^52DV$* zweTL;hcb)7^jw?j&1U_5^=VKO@KI;7$xFm86Uy`$5{%O<9Qb~wA`(uK`sg!FhnIFIhc zKXab0c77lXCT_k$eltxqGyJF#RBp*+UrJVspld0pMj8xZAz5FQ6J*~08E5t#VT_2{ zPq$}wNzvWA4KJDtPc3n^+VErOW4Cn1&R77MH5isy=022@%cM8ne!8dTOn=SaLqwq9 zRVk%>0)$_3>MIL~`$3-;59PfRr)OOPnV@cgn6rhjg))%K1qJOqeU1OCrSlI!W3m50 z>U6LOWnER*?8^e_f)!RXoh&h!3d=GgVry+DTfrpS@Y-Tua;LpV1=ThG2 z0CH`HP2QTpUukFFt4;zu%Im{>(e`t!2T2g>1O?eG3cCxyQqO3zeUWL7Fzw5uy$ju< zSQig(WTO@qGYv&Rim1|n1=Go!+sEQ{tLfMmn&l2pf-2;&PB{MFg#pB8Wc9?>&%I29 z`vxup*+EQi`FF#1@PRo2u8faQlu>aMg7Hwc%Y<$Zl4ovwcAdkiXG7dj1YS5y^q`Ya zl}8ODw5UGrZ;28S*DR+RevB{(73j@^uo5&HMSQvU**!dNfk4=PMyz^F>td6(fVIkJ zsl#uS)r^z6gBwn;u|X~H3?zgIZWffNz>esvkWbcvxS3gOw%G)X;rv2sz+KD$#F~+b z6xT(ryP$=ETiM(DRQ;Z6;Q_gsVzgqhpfxuJEa*G(U2cKM8`-8_P!k2>ZHmBX#sK&0 z+iQ-kAA-=pQ@2rmBwG!_g<>nGP(d4ROpSN3N31Yhs7_RbvF@tu&(Yfs`Ov0Atn|Lk zNOd;XN1BWizXNKTW*}xj)HEsCTE*)(PHK7G2@WLz5FdfEMoe4*G8F{U2)659WBLYf zaG`!Ce8O~$3o}9OTmgeC&r@#RmxLjtnXs|twu}dhIvi4T+j@~aR8iPH{T#MKq}<<` zKaaKz1&O`e?3Vn+5YS5{<7@aH=HHkje?&u13Ssw3PKMAfYq3qVSU9&rkPCK!o^ig5 z$uk>#h5U|pKl`6>6#P#eWp8!U=Krdrtj35_2xpNtXN4Qbi=vI;`0v;-#m4d$<3SbexsQ`sx-95WvnS}ZE)b)cC zp(RjdTZKI8pF+|>G-M81NhDmf8qt~$HQaknPhwO=3wur$b|9oIz|429K0DvBGJm!v zRj+j_?YMW%ZNMDh`^T8Y&NL;C`+)x+%0%F|PSJC9&)lR=)CrM1)29rekI8SX5zgkaA+6-8dDCBPb(@uC4?!C3 z+YF52k@O5NxT_>6;kdgtczgtj1$>gaS)P7hUQo^IWSTRzLIH{a;PodGca9(OQ4fA< zGgoG#WK$Lfw}}^|U_aYGR7_{w*4v*O=rmnUwI63Fza$nG%bX*zVHt%1F(J|oBx7%M zes?!hCi`_9m19EL+wd;03$Xr*-?xEGn(h9B)D;cR&f zKTFz!l*fF2_CZ|CIDFo8W9qJ~5(0&!{yu-_@NHPDnuCEa24q;4vA`pCo*&&Tb7IxzU-Bqg~09qIL=?=R_Vg zI&Q^qgnsz5WmJyQ5qZer`*jVC+*mLDqXrH;MIBXL_;d8b(DK>2RoA88EXI-()3eO` zft!Ztduwzeav6Y~SXIz6J}%o$3U`WoyHl@rzGeRN-jkRD6Ho_6iF5WP<|Df2Q*41G z!4O$~2WTbV%Eh3gfK3VJ9TYR>8uxv07DfLn*j*&lmO8lr;>(P znP7u_E6371VyS-DIWPElHkbrblq)yo<03vo63NSd5nSPBlXnxrOlwBT;Zju*Y_SyN zgt81sm|b*%f?;T?7uaYZq~vfj|LL(Qos4A=dC*5f&wgx4beob`4E_rfX}9-j94 zqQ+xM<%PV^QujW=Vpye*`IhjUH}a_|pFi^Ob)jzuhvjm1f#ltk@7WK~8zSUiGd{jU zdta#QeM|(w{$*`ZmLqVwG$;m$@g8bp&P8YUEi8Rt5{lwOD;+IBglj^x(n#414Db%5UU*ea)lyRx!jG9? zOyyWqpGpH4we#9mo+kQm@6=u)hn$v;Zq*B}GZ=jDfT_*0u%LFP_}WZ-zcp8nT!(_d z=_mK3eJ=A{(Aj-&o_g-g*{k4D=Bp`8hNbLau4Nwp7izJStXye5igBayV5=r}(o1pP z9H0{LoU)Ih%yI9X+KE%K$SU25g*WARXkVKzdbzBpsw_9!y&#Z0W->P#ACr~*x6HKH z^E!y2UI^a+F7ngDa=oie`<$t?a_-ggacvSwHjtIHuDliGR)tjIrNVbQ*X3eM%Ob?) z#H5w73bh~st0!-p0v-^jK7j%WzZjS6Kq07T=;T7Ynd0YRI$InPI6F0E?d7m7e`C?- zSo@X9>ZjhU4fRq0T+i1UCM7HbKkhb?L3`=F3CzRZRSsEX!7Stj?!4lZQKV2p_F9b9 zfrv*b^Igi|Tz-W7ec7d|1V{Csq=TpRuW@yTmR{@p$89`!wb1tFX$84`=;h)KEX%Oi zOuo_iJYhYz|zw@_hax!(wP&786EPA+IYSDdx&_Q@GSsfIiWS3v6n+t&B=) z)uepwi~u&t(_&ZLaYSJ~m6KLCb1_PLNbgC{Nhhwn8cO25*ayvdAQA+vt}2vKB*%k~ zfB8swOrMuihi7C07MbF;+P-qON7W>)p}!(EX77JRYQld-YWz&%aUhCXZ<~k`ZXB5R zdTxDH^fXEgF#Am}zx1p5Z7zh*`8J&<sK)aO=<%zI9;}A{2l=Z&6Bb^VVFc-&mp{S(7!PC}4lk@Ym zB&~jdfeNAloI{kWqK91mJRKG=#&tlWL)?Aa@d@Y>xXbXR*kAtduEHK3SF!91HV84W`R z>{WAe%C0v*<1>VhoQIEG63aqU?U){T3c%?Rd9nCQD|#8Z_1V~KaG(RodClj6@NFIx|YzQE*8 z{?uAg*oCA4w+s?#Gg+7f5d8^rD5`>o}FCg;XjxR=%$0N0i4Uf zZ%zwC_Qok7oTWUu|8A8BYA>dM4DCP?GJAlArpTLyyAJ9>8H&D(b69myd-N|O1r>;N z>Dcvy0Xu?7iM7g#WMI4hHg#SV4E)$;Eb_E@IUX_C zT?XAg7k=yMnPa7~PNYU*n4Lh!?g{lmFmg(Th6+La81m1x&d$LZJ3qK*6k?9|4_fvG zo=EK{q+qqcNSj4-5(YKcwSVIkYllZ0!WUL?Nb|G6iv_>!AK}j6+?;wO(SG~1jzQhj zx7lr-bhdhF8Qc(Gn`Hnlp9Hctwg6HwuwsLnwjc7=90o7c$OTzo*L@$m zt++|h3(bVGewAR*!H)0!0uX)ZmLBTq-QS`oiYT}{W59hK393KX|ubnsqdGBLW^Y+nOqCYz0yg4i`|!uouuw~j~KlN-?Ie5CW>bu%hl#|-)y2`2r{Cq`zWtuW>t zz=M{3eXtM4Ctx@_avnLzQzntXj^2hX1#%?1j=8k=M+{F{B=61jK96$Px`}wHt#Eo{ zD-p4)>m)Uu)*Pb)y#lX-`vE2m^&2+bOi;cchP4=>YuZS+4bWh{y(5ke`f#8K`v55M zrr%e83x=!xqs{0gvun&Ol95tZd?nb^KmWcvE*k0J+i({7F5nz4nQj38O2j5-@nSvX zD$~H^o?>U8?+XrX{C+J%v|s2V*clr3HY2T4fYFRhv#4664R$WSyFY^xQ3RKZ-p2F^ zST<&E-Hu^qo<-;pP>%i$Mzz%$H6ATJ`!D~Ti`;2~Q?6BCYi-oocYc)z56?1YLz0&W zZeb+TfRRuc8D@_RLv*21j^K|V`ybitD$p1?coEt#+kzvEA$RZZ`e5~c&SfSATIOWn z_QBW>R*7=D*8Y!aHT5aa=p79Zz6sdCvIx3D8c@2W3lM~Yt=^~t&e^MPTf)F%`B%b_ zmHD~+@1>SIZ8KW0RlU-#fVB<4ztwUAX^9y)FG2o52z5bZp~%q!JwCBtjlQA{Nffaf z9hxEC?*?WOINhFV$|6pIH5GvHFehYSdM%>uBFwEqQ+;(sjvZzKoLM<$a_qjMJJppV z#|U#^WcRDl_2JqjG4rW;3xt`*IPTJMcl*@N)y)_~$m6;&t-9^f47BwU&HUfjN5e<6VxIJpIsJqQxp1J$mocq~N(o*3x2L|ahCnN> zopd&dOcr$=!egSJ^E@vAEW|%O_R`Ze8&b1ha61Jm=4vizRb+sS5m9LEVurk}nRPNOCCK0~k7%|jf%^GqjfT(7}}j?@sb%U=)Z+K*!p zTNv1hM<$k6fA&x-NVrDuJALkH2E+UmV0*jZWljn1-Xq(6j6P!@`14d`@)k?Y0UApd z%m0$v$A1Yg3zxXLn8>Ouq;dR=K%?gBt4)q)2h6Gp40%IyjmD6Exo5-WS4eCa%hu_%yR z-jx*k1dZ=DeVsJGGWH~VIUb$vDK4Qeq%R;-zsLGZB1ER(<(F=IHwXQ4%8(k;4c_*+ zT}t`(bYZ?6=~(Y3k_KW1i2u1r%UD2hXk zq${wB3vuQQiFDXpM*lt9u9HxiMojJY53>Nl^~n5wgi^>C5ZGU_NYjLE3$O|TP*{hD zYvYRu>$hCWC^>@n4mTWi{LX*cPc-{Xv9*!N>k9w5{{Maw;6JRW|LZdgwgG2VdLG>6JeWh>{w?Xc*ZGj2nR2~y*8VJv4Ds}Mo>H4SR)U}-^{I~wYg2dB zy~`=PES=wV*0*WIgL(w9?D%w?&tPvan4)lVK@gW`|-T)Ib9Pqek0FiJRpUGloV7 zRN!1Zd69qlX#!8}5wDZEh=ODp>)|15w%uA|Z{KFjZ1^D`?CtQZe6+RRv3WSI6xuKI zuJ%6P(`%3~?Ud~L%1T4~5y}UMgA!>5mD?5an`=}BANz8`@kY=9ipU~Hv*8P9mROg^-f(y; zWPaqY;Eg)r`j?_Zb0!`x-S*%8=bzx_F60ANG39|wfA3-o!V!TnLs<#NNP`rtm@zJ@ z>kG>}hYG4cD^JS$mzu-i6-0RfnoOf4smoB6e4JpcnQaUR9*D&59o0{1Dz1++IW`Vs5Sqk&j<1i>gj{JOYI-$yCCZ ze#}gNLr3S<_B0qw398mxOmtH$$sU7`-o82f2vDHsI0839x@`ApkokA)>7q`EHJfrKqss4R_Opwx zYyntivZJ*daHeSk5$_$FYoNV^2yzpaWtE^!86(J{YnPJB&4>E3u$qW8d%-q{0G>1>sv$W$CGR^KUbEuwX__XjN*h**1WPXmK@BGVtiijPDT zMfRavJ16F?|Gz;iy6h465%^n{S|Kw_ZT1ig@T;7#Vh_MmaPspWphNg8Z!=T@KI-^ELt#Wn*_?`|001`2cP_qY(OE$IwQL9o2}upDTIypjH@Zioy5;&mbZ zi|-*amJ5bT1_}7~Nj2{0ux$8we9R})KFByRF#U|Jt&0_sj%gu9dEj)j_d=bNG+0oD zw5#TX4n2BMluu3*1>Zi2=sgbE@duAJN*m~;R@Q}GE2h$pP^bDI!)Up-OU>*8SM+M# zjo;Sjsl>zdQkVvEGVW6<3ifzVMYcW-&MAj1ywWoMuH?hRMqST+`kfv2xZq^UgnS z3XP%be?OwpU?^%H?*V`k;T!`BE4(AeU`j zX7Muo&fs~|f8ZxD1k`a*IOJH?`o!@Nev2r=&cg9~(!25X?Ec-SQlGBQo(3V}RJUDa zPASqA>r_5!Kr%q4T+J6-`8FermZgJsBd+rRZ@Hmkb)MBs3)eYN=;+S^)=S3N$hoe8 zm9Qfolfbi|4=wk|{3WAMG&3mO#4T23H>L?fC6D#a?VK$+vK)cV7Y03exHX%0Rl>>1 z7C;yk1PVvB-kaZnAZ$lDl9^)W8?H}3g%+d+tRv(#7wals^_DlW0yW4k_-xk>HTqJ} zDoO`r)!JFt9_GFd{y7-%^};u(8X8}qd3@@u6AxvD8zXyX(@JO&EVx+4v*i+4Yq1W? zc?zuKvBOfPKc11JhA4L+a8bkw<@DUvQAA*Q9?yEN*IspkQ3fy_7)DxF7Yg5&-ZSyl zzQqM-E){=*cj($~8|PCYAKZ=j^(_SrnAqYV5 zD(%5Pgs;YI%n>zDLE!s$-}JJ6N0Z6;?OGNFjl=-+S;~B&G1IOt2GH&g|1^wQxKRsl z6yz6&g7DL`S6vNsT^8%OCoLjIBk1GY$DzXtHWK2XZlT#S@WQqu9Lv@$suYL|^! zuYEfU4n1DfjB>y7U($)`yR*m*=W(at38H$PEJ*T3ODqsBYfls0*S9|qw zSfD-eGO&zq=GZ`BhqY}pKyCamPtC;wxXZ`43^PSd18v>rYWSR$hx=TU(%@VUcOz_{ z0y@+}2a{xAN?9!98C2VR11IG!sT;r~X9t{)VdZVMVsq+aDzGq$%LC${{o5ezQ~9q3 zsgtLj7vNxf=j3x}HmTDgl zyx(sRm0srNQ=%4}6J^MdkAD9dQn#tbNFfPq7486~bUy&^eVY(aA>cpk zK|OIOAR1WgaP$`A{Y!>Hh!wghvMJoVdbyqrEFzZ6c(^hBpaa+Sm;+l4%i$w%X?kGz z%VSgj+E1sE2I}uF+r-)p!*IQ=;T*@fLcmYXySOC-#%Nz#bcosNY1o@BIy}gF7!ajE zQ@U|M_&hY-4p0}{=7y@Ozf1)8z|ggdiKu!ul3WzOATk>R2%b)}`MA|hfGtloaS!Qp zjl?49C`^yjkFJb448kOsshDea9EGMIfjWN8`o&r~LASg?*7d1Esw*MHo$GRj)7mFk z;t@e1Xle{^)`cg5KI>ch`t9kD-Q@a_uUk7+(sS!pP~ zcFQ7Y%#M5lib88XBm^d6AsA*3!)Txq)(rx+!MVfG2#r;d&K_3jf9&k=5mM3I%`#02 zeIK)U$H39~j=3l~l!XozWYI9XU}C7K%>m?+$XxOlaarBmHZ1gS9$bW=gFom`f5;~% zsW55xSqNPaE(UQqT(J0*o@_S^cXjxQT%L3(DNH?jAvvIeT5|z; zp{;z?gF&5_Rk~TOjbz(MNoDd4q@_~kcTG}|T#=}yVn8~FKuSQa@3GwbRB{}i^FEkg zs0BSrSY%D1detzw*$`KnnLbEXJ@F!`2A9(DhrL^<^<9w>+Q-srmfw^&@`Sz8#}T1c z2SWae+v=c)WQPs7k&to)tk}H#)_?)I5*B}W=Nk|V$)Ad|oEiuwwy5u=^HBo!W-63U zb)jP}IT;CqbzmGzY1cG~2}Bhp_D~x zD>&CMZe3&k{*GiDRGRBqCDzVE|HBk=hKBKqLWG3$9aQ?z+53#QhuB~YNxCl;%2cI<*6-xOqTK%p05ZW?Qr&xBq&sgY4Z(i2@ic`;!4q7)d^;9t zP!AhIsJ?D;&kX!>4U_o&#^}6P2$e*9wO1o~bP<8~A;y3kT}`w@%BiUqq;;jBj^VIk zn8;-oZBqFe+P_+r=?`FM6ym=s-tK%8S&F?5Wa%MQl&#fo&KJIJhYaErn;J+tc*Sxm zkq&fX?1N2}M@Cg|&tJ)+eoqFu8;r>iu>S#-UMT$3E$9Ry7NchZk(U@`P>rjP-uO0e zERVbU>W`0uHiRfd?>Z*WWaXAKZ@PHq3JOLFHK7kk-8;6Oxy3?QlZ?z6_|E0Omr<%$ zXn<%dbkI&@+_YHJY4~wgmp3a;Waxzz%z%$1WxkRwH7sPKe-O9g*yyKZuXXO!K3E z3kft(JYcp1III0ynTs9#7A;VhFQxQMu9QIi=|$#;;;QEpm)Sg^#t#bz% z8gPu&fOP)x!^woAkJk}L!QZ^r=hd#3C({+*gSJJ)2i}S5S3AOJ7{3Glb5a8=MlMGT zCg$*Nb$^aNe&ckXM8m48GzE#W1NETUS2md zkQjGQskjedpqPGhyvV5j{`ofu!J{dn?pM4z*U?wrq_dFeh3i-a0e zB^fC-R5K5sy&X(!--{N}ef$XMvmixkmE-&J2$EmKxLxaFZdrre;md8}90*!$V+!4jnV<7L5RPZC3k9r z_pTfMg{ZVcCK#_R1;_V$w>YQJ(z_IhrVV;OEZ~s(0?X&Kd(KGdpQxu|a2v`|6|);2 zdcysPRk@*K%6oziQKR)3J6bz^gMu>ak6cyoH9-dhQmpCUhYY?Y|m)4+aRChe{ zG4Kj|CD;G}UCaQyP8&qEq@8nWwre28xDt^eoxIA^onpmcYyYrh35Kq?2-I!6EUt{r zd!hlY03gYysUOhcrrZYFN zy^zm|{<}3mAeyn*t?=s2VpBM`y2=s`zJtb<&((nR1a7~Rn^T%%p!=|cfuf% z+7za7oK<;C^|yj6n!(w6>Xgm=eysvbuyHYWKoVi{bR37Aos(2yp_3CEmQv|H;8RH9 zgo4bapqStjpIz*#mDMwIPdTY&jdjT}gwnYZTTb^psOJ_l7qgVPf1S;|j&E&upYQOY zSwc09MQ7c!2CD-Hwyi5(HGn=0I|37bD0T- zKao$6-TK_-^v){A_wiPhDFi(?gSLd5G zja!~#Zf#|04`t5Gab93^!@na?{o(ssa|==R2dML3!2*zYsC2kIHA|U-ya}C!H)u2I zXTncsv|fF{H!|-Wxp-83vSTJS!TTItDZVxMSU~Q+GD7^~QN@}f_sQo1%%9pLP{4MJ z$%+oUab2hD(F@j1%z!~4XSl8vxyH7EV};hz16%_6J(O5s0Zp~c{K@jq1-C1iw!KY?lke;+gAO#7Hg|M%^HAopIt|8ma#)B6b2SZ{ zo6ilEj7KC0*5BTQ0#wVmyVR?_OgYoWL|4HtKQM6+q(lWY`VQ;btpSWFc1sU_SEEn> zrb)YSF)b=;-FRSI=kNw@)2TStRL=3^he|2rO7utlhuMsJ!)9f3ud__sVm~}7(>3w& z8>(=N!~G=Kh@E-;ZvT?0zFKBnca_GcN*G>skgl|Rz2G+6UJ1Ke+~~967__?(PunbJ z^cRElq0$xr>V6t*QvYV@*tND(j0<2J`AC8@rMoY0{fMXMJL_m0H~!wPV6Ey!oVY9k ziC;>)MW)YbRWg9#tB!4mHsw0=Y$C%+_qLExhwgzujJx^tUJRXT?eB*{LnV`ixrbTU z1VR9ku%>Rrj8m`u_z*c~Nh>Zc7W=7Zs$iZ8z>K~X@L`ibSVQ$4`_63XrnR8S@x(rJ zFSR3o+(B#pHWLzY$2*;^n~}U)bEYk^OVHEP!Ea_JMrZ*d@Q$i7?1JIf<~`Fha(stM zE!5PkH>A+t;$@7IPF;JA!@hlM0oPzD_>hm^DV9aPtzk)i=(kVnu&TONDR5&LPFXw6 zRn=Fx&DR~a8I=%Fsr5AYeCLotwN6FGc!G>g)h6@YVfVa+_%X-Zw>MpXZ|-M~>|6Xy zF_dneDJ2Jnw|O(0u)9T>l*MlAjB$Rd`>J8?h#$Tw)6a3u12cI7-{NU$VHf>+fySMD zf1E?xah|g$Rez#%9ar(`Nw$u9Qp>o%{JknTLig3dvkVLvCh@>=wq5&ziP4qK(;qGg zn#twlyFS305nddS9P>KgD76>)W=sdWF2?%#ya#7O#dyk5W>2+G&CN_lI`hx`3N2kR zo!K?+Q)^TCxa{K7W_)h$@7U*G^<`eGGR8>U!svcT|9NISks_{VpVlzE(vK&!(XUJw z*c?(ZeVt$WGVL1;YH_&5mC`_Uoov|2bvetiQrFz}b?^O{`FEP#-Fyh4vjgFdB zAtG@vJp{^r?3aHo+a%rE?m0#8im~BHU+F2CZoX?);SFs+{Y><~_r02RmLx^d?%Z%# zCTY4ZEYkS~jmvzXu>4+0I`1>p;+LA1RHU|-UOhdfDTgLH?xpue=n?j;OI!K!a%xeT zHSNA_7b>PUcK8m1Dj=J2i&xU7s#LL6jgf0hCKO*T=TG1N4c>`QQNY+bE~5HcJNTu@ zO;&y<%=2sw?ca~E#j=Lu0%n#~OG}wW?wIGHr!!TpvUSJC1dR^8?tGnfdG{V?K^}+Z zSl$Us?zx4PYSKE)j_kA`%y!9RnCWpmC*S>PlgCt*Pk+Zc=unopR9&+a;PHEY{_DS?rI#k4>g)yBg z)obgN4m28eRohf^M%ZL>`gxZwOZ;aEi!X~_Om-JEhqf#! z7q^nPW|vIuzs?CACY$c+jQmoBOUY@^p_gdG6USF6+9yt$FS|Nl5cVzzgeRnbbhEet z-~2QES{Pe@6VCg`^xP(7ZGm~<;)rHawp?_jT05xb?F*|&4 z#iFZ#mYr3;nc;*QesQwIxwk|}-xE!*GS!u8TS2*gUiPpbaY0{j=9Zq36Z>|D_c*K} zjh2EE)P?oOzQfR0o0<@EbTAz*l^F4CqHVWY!}Up?c#`*w*sba#VqZpe)vvB!TymwZ z0baU+Y>Ha5wV8>l=G{mdwVy7Naa2{0m@~m4ORZrb~9@*I5OuDpL z)7NE(@@1nJvmDU^;>jy$7sWY*r}@Rd4+ z)0fZIm7w-~^Sx!9BkmQ3W#00J2aiclY-JDqy3?w*cfpvqi z`m4j2;846`ec-NFOb;cnWj`TraF?4~TJny}M=}Nk4drQ3?OUDvSa2BjxZ!S#gXWdX zy$6ShUq?$by5_NuZ=hGg@nMzW_*;6(woWYcPB1rd!L*h{C+|9&ej2s@H1Iq349e9% z@EKeHgR$FKH!|0w#KtcMQs^Stggzw^c%L2qH|=J+W=(1GMg{jHwqCc@idiK9+= zc`WpRM=o)>hY%HYdL7;~2Rw>fMMZ~0R;#4Rxh>(KF-h60ZTaf&kb8di*g5^_x!siN z8d_xOci&2FB{ol%q?Pnn27$h`_DiBb1-aD1VT%J_)N?QqqYzqI`GAa?b=&y-ODk6b z5w3XQ8ds07M&RJ33~zjr6#z=I;TGCt!5>9w{_;+r=GOdHA3QKvIVw$FaaAume_S{;UF@6uffcmWGYd*`x_x(()Y z^6quaFj_(T@lwdWwTkJego0E1lD;%pGT-3W0$z~)#u1HY|`68^G8U47O3`6;;4_Hb+W)x)LXEvO*AE?A%40wlmozQik{YcK&vNJwD zgC`7@mE9#_LK3s;Lyc?{g}cbi;tld_%rJMT{lwpYvslk8a7C-Z_ino9eHgQJ2b3i7 zb+pFu}7Ug`g~*z0=#ogVhzzmEC8uN{&#!GHfZ9+WJs zJB=w1@3~uB?$Z{*NvZk+Ii)9O@qajIU40>{%c(jq$(MSOTR`|O9i9BT?b=b)=Ioz& zasG&JwXu=uACr#oXsN~TWgqRFCy%kZuT{@=)JA3%N_{n@w2xOz#7k-4n;YYVSkOSNs7Qqsqdllot}BP$U6yssveXMO#L3e3sQ`azWO z@f%dpHo??OhHB;K$Phej9~w=Nu!T2OylmOZ`~CrKh=6cp=(9eMFCrg-Ym*!v6% zW>x1Rspyih8LHx8Q%^l3M)t=YM*Wkgp_(KA;OyN}_%sqx-j_Yl70PI0Pab0uG&Ojo zx6wKXM&qui_pG@Pi?2bf#r&i%@9ZN8t0jp;FmR=~P`QHgu=4Bf$rUGe)Z~bVZb8Sp zc11fMb-dkuV&PtOJlg4MpM>7<-~|df6xK~GV!IFWzlhWNG)7U;bB?&{lVR#gyCfQ8 z?v$?qgH1D$7Ui^$nd?{wA3r2X6_mUOFE-)9A@cjznM=bO=HaYPk=$fqj;{D=>Y7^N zT3Mr`7tc9VzWxZg!?{;z9FP>P0OvaDTQ-CB^IeuU(Evg5w0Or9!v z>$3Lk7n@oOW_m*G#e`i08~kXg0{j+L>5c#|x0beT(3*X1NOQAXa3E`Lk2`&?s%|wl zmBRNfc4KIo^JcRGYE10YG*#r>NJ>|OA-~Q1E$D9}5maUkF2}PPo8Oh-uBzzVzJuo0 zC=9rO09_=a!+xheg~aZv*LDh`nA(kLCLdpozJY-xeTkaea_S5vL&gwERxfVqQOCkV zK7KrswMD`0o3Iq^x5!OL_NkNR%8A&7s*U@}^!qTMp!h3R_cq{g@cFqRb)3nUOk>ny zaZk^)z?dH%Y(uWKxM1`Hq=ce~;=R}M=4{2LcI5igM>TKdEGkzoqfZt}OhPtm^Z3Bo zp9#w*q#m!{>$2T;TR%`dRpw!k-c#5$xht_}quUfQ?iSC~*^I-Z_=bgzp3OBSYUOnb zcU%4`db)e}8pXbL)8nM9lH^W~vpdSvA(!o_`NS<-Ft~B34*{~?A{*`sqc762npUsX z&xQKSOokkG_t$)OdGyT1|~Cge?a?SXtf#Yaq4>ru(d^Ua=1KRJKc{88Gi~M^`#P5X z2+vGejDwn=^M-ht>ahMuWH$WIBfH)&uRmq_#_qR_v|7izfc@Q#lk}av`++LH??Yq9 z=a*m1v$gb-gm9y&<3_31uK#Qs9cG#Qts+G!ZJ&~*_LOx!UvJ30ct3cPu*on~MJ09x zwcYEG(6`l~r(hAze`wb$vmZ zVEf@}?jncg>B%3Xqo22Ghyp%7Lq%6pH6W~?QIm)hIr|973V8X>onV^Eg=6B;bh(?m z+$0+i9r%=rhS5Se=yeC@cxl;&-=~pX=bZQfG{o@7Eyl6>~hW#@+JYVKb+^$bGa)oALyth^DdmdYxWf9fdfmJvcg|QPprDkhTZ07 zPsBJWWLTDjcylD4+X;;7V4!&Q#>I|i01d{TvI@^O>8GwC1Dm7mL^Xtg0YBa%B?fou zCl%~+Co`mvWmcn+7OJ*^GKCsffd6DMICBRAMX(#ZX$o+}MYxF8nVZ`}d_TXA;yF1< zp25cm$rU@y=gzf*pp18EC@s4rXJG26;sY3F*R-HdxtIKQ6;J zEWGsDOPYto-&8jH*OQm_u=}k4aoPD%;HHw0zQltdiONBXW|X_qXAj$D8CfMr#;D5y zx{&tjd^q|-#7V0Fl)btDS$CbnEmlm-PuSi(#tk)O zSV!y|@14q)AUZvSd$OVEW-ywcnI&oEI44@JyY=y5_Orq^p_+dE-9CLt>QiK>7@4(s z68gmPnO9kp;F@|6sYj6{LzG;EGm+9N^Vq7}rJ3z9RGh1GZ4;g9ILD)|WBJ~=L#BUX zlqn4!Y+|9d)bxwdY$vo^Ou5>H>6e=A)85?uC({4i%_G8+#4IGD058nt3!HcTf>fNQ zbR51yf)Qm$x)hw`Dee-up6YAfICPG>(dD2w+?+0kl9tkE8Lb}YmTg!4vbnNqFWa4{ z_-E=}vL79*P5)0B>I!agiCmhNRwi|A1061C#q%L9?jF=v%r;dc-@ZA}+dvNJ$tLIA zoU53bC16h~QV!Y>ZE6g{Hq-O-WmyCnEoNTb4Pa%+4Bslu?CWSYY397%c}nY*uZDo@ zUH|^ck3~Zl(MfjaC;p%IuKTOWbX!|SozX#$4HX!eBM4H|QA7!K1Qk&vf)uj~H(3iuWa}iKH8L)Q{_`_D+F^_hKZ&9xv9D_3K1arX z+t;{kGHzs}`t!Qg!RYH?1VHqRyH!V7hPNPhmkq!{b{J}Ru{bb3UaE9FW1e*S>^6gz zjsd3kEm0w$_+fW^o;YVpWSRHq#Gpv>@~TaB;Qc81YSwtJ0)e-3CI~P;?ya@0?25Zk zXTvVQoOcgcwE5v@O)_%%8x8n%hHim|RF43O{OoLA~0#|dfy0^TZbvVD5d$T7s)QqwE{_M(% z-O05AGwv#gF3N1xK3Aj(pC*%c`wGAya>O1iVJ6HQws`mG ztm<#C8LYRPJCwEWzwANR-MjY}u)WTdb?U#pc6@h25vkWYmU*_}O+0v&65FilYtP1n zYdz5_xx0yrtm^;>Trs*Qgs!XTFsJ;#E8mUhI6MenpSbRtZN*Jt1O|D0B zV}acaDJn8}QcjCoqwLVyfJCF!a zs2~13KI^l@kwT*6Yw`Dea+hHnN8x+*)D9cvmQ7~1#B{?@$f$1n1yuig0O zTRi0_TOkdo=6g0t^yjO)JE{3Dx#P{1{V};Cf7(mDetwuIQ3_o|1h}F{KzMRaa)sg+ z+9RIXwcNES?>El8Q7Qb?|J0_~aK56wb!Jh}DgEReEb?s6DxD1(e)Q+v(P0FOP z#@^Y5)Z3J>`AwPv4PaMj`tYFOv~!-O98P<%D(5_*2F~F=R zn9Y{9x~LWB1?$q%HPzJ2#o7AWc`nB?A*TKHmj>14#Q3-Li)?nwh3mq=A9Z~1e-#{v;-X`{W)^nzs*l!IA+5Ed5L`HGXD&H&D#TlfWP5YM?|LQW zYlE&eD_TvB3Tw(sEaRit_pz>73j7JgSfsdRAFUuPE;Tb(a-_|9+NQcnrX9*U_g?}i zC@IFQWn(u}68p4JGn4aMloB;gD%OQQ3Y_f3V2ir+M?X15x zOz$O6ZS@enU6>&ZV6-A+WK+PY+psF5{ZArbx9)tNAKpG0<>tvhUrW*At+Qg^UV9ny zg8UcO-z#c0#3nb=!{Rih^Zqlb$|E_OH*X=;*G9xld=;kvgA_bG1NGr0|CkN7)5EUW z)K-M&^~Ia$wBghxLFx7ZuGwVDP)ApZ7QZ0c{W zSpPi(C-v#^75B&1aF|pb^GhgQ6Oo1;{?7wWP>dMzdW+!AJ-m6|G|q-Pe_5pN=)bf@ z<*@GFbxn7A z{*N>MPKtH|xbidJOi**92#oe)X*_^4s z>Zk5X4=nr>b`Vp3*y}8Ztew(Lr}}IiJctKQB<|y!%Y9MTVCaeC7k=uzGX>?!-hI2XfDMHb*vg{& zmA7u}>R`>C{PHlr0;*5voYsS6;P%~+|3Y{Aw~7iVvXyfQ8H+6>VT%Yi#3cNEw6F<1G~M_1hdl!Cl#z~wD! zdb7#1T1cj8Fa+s;8B5Hdhx|^256+9?;n$)FgF9p@i2)HB(jyCRhYyOer}tLtqVubT zxY7U_9Gtq8%>MMT-N+cUt^loTIe2IL?(g^XlIPg*|H}}@(n9>R(?$5bKGm~}drp`( zbx&!0m)YeUxVI{BB!Xw&b`QnuAf1j~5FStULB=+op1_RqdU_oeyp})it7RY)N4u zHI)yMZq)&miaGrXqvhS)5zvl-7`aRfi_3x_%N%)WQA!oNbgOO}NK8FEV;E?ZK?x5< zrW%YMp|JPWdhTgORHv1h=rBz`v$mvY#om~oFRzil?AOTSi2}a<&)G0j)1tnW7D#Uz z;vTUlrS8w*7dPWXJo_+hOlj4H#u#0b4TLpayD~JAQ2|K-8%jmMne@>zeR%@JAvMHt zOUT2G!NKTyr%1SHPunPy*fqwn?X@qCuDuB~hQ5Rh&g8D|_ZGhB4?z6R2ey?#kK+gF zn(FwvMsgT~vHN9;>{K?C?8QDoZ#r=awU1`At!_nFsCl%~06;+DN^H43i#ZOf+LI#9OV3z0RcsRDveLLZ zXf{FpDir5hkhu|ONE#y1?AXO9!vlVQ&{kegMm&6|EMddrvf$|ixm#2`jDqR`7JA-g zXvS`pEp%M-Duf&I@&2(F(iQWMN$k$SFOH74sC3vHk>Ms!DkvtAGVY4rorL_taM}EY zJT17su|omMS`b)W)^Tt+1~$j24NaA&xuv$IBuRq0)G)!lU#RU)>&}E00-G7I=swjBpyFQBuY!;L(olo$ENkB}N?N4@!=P zD%M?^Q5R>PLsoh^8!{u<-Ry$vdb}Ud1MG(^C4J%iPsyiGb5&L+o3WXBH6H{a^yPae z0o1VR`u1`AUi)AmPDLFltj@tJ5WUHGTmjUw7GMNmlDNKRD}B+Z6@aZxKIMWvUt!jV{iXg?RT7&ESoLx~iwPx_PhJ{unD7`uM1Py>m`Y20J_Z8 z9IMaufA<20nMBQ*S~w#eWudo1QvDtZXg{e9YjF(p&c)&0#lCRoomsjXgKp}!DR2}M z8>SeF_5e*w90rn;14Z%<1Ns@=r3AcqTgdD9fOgWq{by=sNiye{ZmIBFJ`A((9PK|& zoz!pZ#yJqeLkGEjj(J-hWTe-tP^jzch2kw@DW#EXpTKC&94kz$}1~q6WrAfwJMZ8 z>JzqLX3|jUl-4!02iwC(DRWLR~V8w5?I6CcWDQ|YvtXZU0y6eGHEAY zgBK}Q=xeyf#vHeWMC0%&-D;xv^8 zgJB(w5%MW#EiaJd8cGbflRxgoLyk2E!Up-c`J^UeLzjM$U9ibk#Jxw zoY*lCu3$&MU9c;X2BN(UgfT+UA>u&c$=z&gxdi^2@L&G=n1r<-jNc@zU>F!+piQ%< zCi|=*(aAb-+VKAnf^#nGoXojgLxJ@UuBLg1vhsM*rqzXoZJfGQKOp#i^>j+#;Z8BI zgDiMVMC!oKZAS&N{<%I}NvNVJ!LqV$wOVh==K|B=B>#i$C<}a58*fb;W0z#%6GjwO zpTJO5j$nr920yP`-XMxcU^IQ70-iU?q<97NNV=_Q(pn{7C@}Rh@2L}oeA~TDJm2Ra zAs^cZ0xw4H=z=SR6KjlI43RyR=q}jIjNG>|TxB$^SrJ&mjDs5i1j!gCa_s`f9et;# zhBHAn`THfwgUE;Km=KAr8!9Ei20J2U;GI&W8#Bg^^&Nefx$#S4n_*HTA@~L*%rlR_ zmUawL2)Cy<+64ZQaA?O&M}cGGCjwCxH)?w5%pHcz4*TiymjIfCcb9CHNb}&wEc)QofByEjp5Sls#A}JX k7wqG2rO5xQvYA|4zlZte)>Cz}O387Vo-;p7HFCQ5AGf93a{vGU 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..a5ed181896aabe249a28c0383e207bf8e6eb439e GIT binary patch literal 35000 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 Xb9T^HEp@7+OG@L)&C4a1tRDV9B55IL 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..73d9e5dabc1a49fa5f322eab1baa30ed14170311 GIT binary patch literal 46014 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%0Aip%WnGdYVwNS;|+! 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 KKb4&fz58DRU%s~h 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..eb8de71c91b201ad5bad46e542aef5227fa6ef1b GIT binary patch literal 31173 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 >r>3UI#hmoHi3p3fBt|*L+@><) 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 literal 0 HcmV?d00001 diff --git a/assets/images/social/examples/recursive.png b/assets/images/social/examples/recursive.png new file mode 100644 index 0000000000000000000000000000000000000000..f860fb1db4a7383976b0aefa59550e95c9b206fb GIT binary patch literal 37899 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 I@y@gV10wRE%>V!Z literal 0 HcmV?d00001 diff --git a/assets/images/social/index.png b/assets/images/social/index.png new file mode 100644 index 0000000000000000000000000000000000000000..7173c9039751401274a6f2d59d9df475b5fea93a GIT binary patch literal 35717 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 PiF4S=;~@V)(D}ar_sdA$ 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 openai_function_call/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 openai_function_call/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 openai_function_call/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 openai_function_call/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 openai_function_call/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 openai_function_call/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 openai_function_call/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 openai_function_call/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 openai_function_call/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 openai_function_call/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 openai_function_call/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 openai_function_call/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 openai_function_call/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 openai_function_call/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 openai_function_call/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 openai_function_call/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..3937be100 --- /dev/null +++ b/examples/autodataframe/index.html @@ -0,0 +1,964 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Automated Dataframe Extraction - OpenAI Function Call Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

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 openai_function_call 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..496dca743 --- /dev/null +++ b/examples/exact_citations/index.html @@ -0,0 +1,1021 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Exact Citations - OpenAI Function Call Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

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 openai_function_call 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..3a9d25efe --- /dev/null +++ b/examples/gpt-engineer/index.html @@ -0,0 +1,1227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Creating multiple file programs - OpenAI Function Call Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + +

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 openai_function_call 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 openai_function_call 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..bc0c47184 --- /dev/null +++ b/examples/index.html @@ -0,0 +1,871 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Overview - OpenAI Function Call Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

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..64f180434 --- /dev/null +++ b/examples/planning-tasks/index.html @@ -0,0 +1,979 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + One shot Query Planning - OpenAI Function Call Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

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 openai_function_call 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..1a3166e8a --- /dev/null +++ b/examples/recursive/index.html @@ -0,0 +1,989 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Recursive Schemas - OpenAI Function Call Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

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 openai_function_call 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..354544777 --- /dev/null +++ b/examples/search/index.html @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Segmented Search - OpenAI Function Call Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

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 openai_function_call 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 openai_function_call.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 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 000000000..ba1cf6494 --- /dev/null +++ b/index.html @@ -0,0 +1,1222 @@ + + + + + + + + + + + + + + + + + + + + + + + + Getting Started - OpenAI Function Call Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + +

OpenAI Function Call

+

OpenAISchema, structured extraction in Python, powered by OpenAI, designed for simplicity, transparency, and control.

+
+

This library is build to interact with openai's function call api from python code, with python 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 openai_function_call
+
+

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 openai_function_call 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 openai_function_call 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 openai_function_call 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 openai_function_call 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..7c3fa8e25 --- /dev/null +++ b/multitask/index.html @@ -0,0 +1,928 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + MultiTask - OpenAI Function Call Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

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 openai_function_call 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..49ac52224712a829310ea038575c11ed99e3c20b GIT binary patch literal 462 zcmV;<0Wtm~AX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkUaAj^m zNgzgbZew(5Z*Cw%VQg$5Ole|rVRCs2BOq2~a&u{KZaN?^E-)@I3L_v?Xk{RBWo=<; zZe(S0Aa78b#rNMXCQiPX<{x4c-pnqJ8Q!* z5CGu4zrxV2QR&*PWGERzAWmm-l`po4Ug%_s|9zcjZ4+n`pBE#c)5l3C&OV?6Ew{B( zNqZ+17$XWY!qz6~1hmUS^KN}n8_eD^2wGlNUY}pG*^~cQ5X=2&bF$8XcWTPpVDPZ9 zn~ + + + + + + + + + + + + + + + + + + + + + + + + OpenAISchema - OpenAI Function Call Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

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 openai_function_call 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 openai_function_call 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 openai_function_call documentation.

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

+ OpenAISchema + + +

+ + +
+

+ Bases: BaseModel

+ + +
+ Source code in openai_function_call/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 + openai.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 openai_function_call/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 openai_function_call/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 + openai.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 openai_function_call/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..a595c5f2c --- /dev/null +++ b/philosophy/index.html @@ -0,0 +1,853 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Philosophy - OpenAI Function Call Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

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..07134502f --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"OpenAI Function Call","text":"

OpenAISchema, structured extraction in Python, powered by OpenAI, designed for simplicity, transparency, and control.

This library is build to interact with openai's function call api from python code, with python 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 openai_function_call\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 openai_function_call 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 openai_function_call 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 openai_function_call 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 openai_function_call 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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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 openai_function_call/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 openai_function_call 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 openai_function_call 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 openai_function_call 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 openai_function_call documentation.

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

Bases: BaseModel

Source code in openai_function_call/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/#openai_function_call.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/#openai_function_call.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 openai.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 openai_function_call/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/#openai_function_call.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 openai_function_call/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/#openai_function_call.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 openai.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 openai_function_call/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 openai_function_call 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 openai_function_call 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 openai_function_call 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 openai_function_call 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 openai_function_call 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 openai_function_call 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 openai_function_call 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 openai_function_call 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 openai_function_call.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..354d53244 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,73 @@ + + + + https://openai-function-call.onrender.com/ + 2023-08-16 + daily + + + https://openai-function-call.onrender.com/api_multitask/ + 2023-08-16 + daily + + + https://openai-function-call.onrender.com/chat-completion/ + 2023-08-16 + daily + + + https://openai-function-call.onrender.com/multitask/ + 2023-08-16 + daily + + + https://openai-function-call.onrender.com/openai_schema/ + 2023-08-16 + daily + + + https://openai-function-call.onrender.com/philosophy/ + 2023-08-16 + daily + + + https://openai-function-call.onrender.com/writing-prompts/ + 2023-08-16 + daily + + + https://openai-function-call.onrender.com/examples/ + 2023-08-16 + daily + + + https://openai-function-call.onrender.com/examples/autodataframe/ + 2023-08-16 + daily + + + https://openai-function-call.onrender.com/examples/exact_citations/ + 2023-08-16 + daily + + + https://openai-function-call.onrender.com/examples/gpt-engineer/ + 2023-08-16 + daily + + + https://openai-function-call.onrender.com/examples/planning-tasks/ + 2023-08-16 + daily + + + https://openai-function-call.onrender.com/examples/recursive/ + 2023-08-16 + daily + + + https://openai-function-call.onrender.com/examples/search/ + 2023-08-16 + daily + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..430fed1e5fa56b9b1d8b1e225c91a79d85aa26e8 GIT binary patch literal 341 zcmV-b0jmBViwFp^2Hj)=|8r?{Wo=<_E_iKh0M(YkYQr!LhVOlfkh|lwgVBv7z3mCM za}kc3m^rpxOSvpd6*b`mK2|OaGOCduQ9hiquHMRSQ}9UvR_lHm<5ZWT zL=NLTTF~M&TSZJE6c|%E8_@O`D&;2G$fSS%4v{9;ce{G`BI>=^zOv-udy=UU?0~0$ z=dK5BZjF5MtX%RJ>~DzR^>LaFX@dBj126|B!G<@O6gePgmEToyTw5XsU_WZ(qVwY| z2ihfQ;u$4;;1Z^o12SGAbz5GnFq7+n;1poOtjO6=bW}Vrk}|KX51s_tL0iO-6}UHG nZR*Q3rt`{qKsECkbjhpABSKK)|0CZoUIDuwmkpm-G710yQUjy4 literal 0 HcmV?d00001 diff --git a/writing-prompts/index.html b/writing-prompts/index.html new file mode 100644 index 000000000..1a6cc880a --- /dev/null +++ b/writing-prompts/index.html @@ -0,0 +1,1034 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Introduction: Writing Prompts - OpenAI Function Call Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

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 openai_function_call 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