From 2dbc27987d965defa6ea4f53dbd837cec8376bd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Louf?= Date: Tue, 20 Feb 2024 10:16:48 +0100 Subject: [PATCH] Add links to Outlines' supporter --- README.md | 3 ++- docs/assets/images/dottxt.png | Bin 0 -> 42419 bytes docs/index.md | 1 + docs/reference/vllm.md | 4 ++++ docs/welcome.md | 11 +++++++++++ outlines/serve/serve.py | 14 +++++++++++++- outlines/serve/vllm.py | 26 +++++++++++++++++++++++++- 7 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 docs/assets/images/dottxt.png diff --git a/README.md b/README.md index 43a08ca3f..a5b89d1cd 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,8 @@ Made with ❤👷️ by the team at [.txt](https://dottxt.co). -We'd love to have your [feedback][discord]! + +Looking for an API that returns valid JSON? [Give .json a try](https://h1xbpbfsf0w.typeform.com/to/ZgBCvJHF) ✨ ``` bash pip install outlines diff --git a/docs/assets/images/dottxt.png b/docs/assets/images/dottxt.png new file mode 100644 index 0000000000000000000000000000000000000000..1bdf8cb61ff415b10450a9f4a80bb235f048e694 GIT binary patch literal 42419 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 z z*VV9Pu1_WCN4+|aGN`qzazvyfX>HpQ7Fs4)tj^U3V_hJL`giP*gH!d!L7fFSBt5J1 zLk*%^?TS%WQ*#cIpn7|)c;2+?v>3qkxRqrhGx8e-6w9WqqfmSNZFZW@i_addZ1Y26 z(HN7Gqz;&IEUz_OQRTAvn(Xuh78zBDnR`VpCgrTdL`9rY16eIX@C;Bah=9l@4_&E{- z;79=EL_+@7?2kbD&Sy`-kFi)BF>0#lCdcIA!~qmKMDv^=jl%B|Gyg>6K~{>Ga?B(v zoVx2|9Lz$c>!$U1gK4|%7{yG(>2E)u$6}klS-%6*sJVPK7gXP$UvnM5n#tQGCB7}4 z^#mfV8ur7)sNUNtnJdw+)Odajs|eB#&z~t#l+_oT)+`G{M`HY1#1_g{Sfee{w6KiS zDrI`^bE8qwGB)}>sRWan>N^$z3DMVtiMOBAbnGuS`CP`*4risQ4ahbO@>5)hb#Avf zkM7y}v}R?R3|m^*e)^yu_>0=vS>q@XG-JIqS)X}VHe~-{vx$J^Q_j!LR zM(B+Gy5ixG_L+4*d?t1X1*f(}58W*nBW|p)jvU|4Ik3U?^$aM5Bk^74WD_w~6J^rx z(|zk>im0GpT{J8N={U&JoJ{^#8Mume_4}!8Ep&I^=rT=xt<={|Oaw z^beNf4v9_jR5hNy0*iL0bk@_?L$d7|Y01zaC-q(*uqE@%TLuEyXox3l3y7TrtU;wNc}pRM~|R`pWj- zjh5B(8&&-o*Z1CpzsT};Uw%3^L>;od*`s~_H}!YM#9EW^T-Z))_AV3x+Tz~Ikwcey zH(mChOU>HQ3g4Z5tHtHm(-YhXTIj~w;@;xNS2Hzh8{y~A&XSQ~f=YyrN3-WP;4ZbS z3rR(PUKDB37YeIQC$mC-T}rbWA{M4&gD8KqCx6;tt&APWgv2!MV(&?de(Q>m>_I2V z+R1|li*nvM=4~2IS_EE^D3S@dJ3yx{d(7x&L#S*0->I2Lr!t-*C*}M0gM&=Y%Ek}E z&lMh7(J-SDo};H6^z6(NW?wCz_&isAPHMCz-+?Pg>9dM*Kv`18PpzQl18)=e)Ur3b z7#R_Yw=U`ufY3WVJv9M(1YlqIB6f!Ke7hhV!FxX}nSmu9;c5B4Bno(&=(KYrA~SF$ z564yU;5aVsk9kK}77JSXKSzb{^R0H2)rU2i0ib^+I@l})qJmc5urYvO*2#7iOQhY; z=V4Gc=Pt$h_I5XIDelL`4K}oAj9#SZjNYLJWG8>WV6N{bem00woe|N~sgoe=4lt@# z{u-SJieNQjMSC1R!;1b)(qoBch1`4VxEazrEh!&CQwlV*qp+=BUHPMSKVxk{7%x`k z6TcLUz)m?AdB<@>pRSs*VDTz86|OfR_pA>RYz%3!z)kIR1lqLJ_M-z^=Irep7AGA_ zXCQx4p<1rmLy@=8z%-yKS6CKqir`yMe8N+7`lE5MkYY=gGPcaJfR)~MNpEyEnJKLi z>ud+u?$pYN=MjdAQxgx&7?fYT{)`#fF)RV2Hd4V=KAf0eD?LDS`7+f8BLv8;6i#eQ zw<{mvCbr&_h*U&eM?lG~CrwA1r1G))aR~bjdX0SqviRp`BL!}VNf`de5=(eNQwT`q zhIF0$&~#mGw`wiyH`Z4%7-qu_GLwU2Hq9>{paG@20eM`U@};WVyil${!tuYM@c`nUQgE>nV0^aO$1&qtC`ee7a#e>J{6VBy2GHMu@KaWOHRxml!p; zE(zL=ytRYEO)czi)_@FJ;>F{}BuvL8%U(}>+^Me_%GjKUkN102A6+70`uK6&gq%Sy zPyxzGJOB`^+mJ}7!xdC`nqcFIr=w;ONGIP%k;vm3PT@Y|d&(S>0EqQa4H;TgQQBRt z1B+Z*+yt53Sn!x$cn&TAnZ6!?r$r)DMJs>4`~|b*d*&rr$V

SCw?g1AZdtb{ZFl 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

n)eKl*BiAN1Tp5@I|=#iLr)t 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 literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index b19ebd57a..2c552a237 100644 --- a/docs/index.md +++ b/docs/index.md @@ -17,6 +17,7 @@ hide:

Robust prompting & (structured) text generation

[:fontawesome-solid-bolt: Get started](welcome.md){ .md-button .md-button--primary } [:fontawesome-brands-discord: Join the Community](https://discord.gg/ZxBxyWmW5n){ .md-button } + [:fontawesome-solid-wifi: API](https://form.typeform.com/to/ZgBCvJHF){ .md-button }
```bash diff --git a/docs/reference/vllm.md b/docs/reference/vllm.md index 063699a6d..df619b7ee 100644 --- a/docs/reference/vllm.md +++ b/docs/reference/vllm.md @@ -1,5 +1,9 @@ # Serve with vLLM +!!! tip "Would rather not self-host?" + + If you want to get started quickly with JSON-structured generaton you can call instead [.json](https://h1xbpbfsf0w.typeform.com/to/ZgBCvJHF), a [.txt](http://dottxt.co) API that guarantees valid JSON. + Outlines can be deployed as an LLM service using the vLLM inference engine and a FastAPI server. vLLM is not installed by default so will need to install Outlines with: ```bash diff --git a/docs/welcome.md b/docs/welcome.md index 78a2301ce..231a0e3cb 100644 --- a/docs/welcome.md +++ b/docs/welcome.md @@ -81,12 +81,23 @@ via the next-token logits. ## Acknowledgements + + Outlines was originally developed at [@NormalComputing](https://twitter.com/NormalComputing) by [@remilouf](https://twitter.com/remilouf) and [@BrandonTWillard](https://twitter.com/BrandonTWillard). It is now maintained by [.txt](https://dottxt.co). [discord]: https://discord.gg/R9DSu34mGd diff --git a/outlines/serve/serve.py b/outlines/serve/serve.py index c85db7b90..135169cc1 100644 --- a/outlines/serve/serve.py +++ b/outlines/serve/serve.py @@ -1,5 +1,17 @@ +# _______________________________ +# / Don't want to self-host? \ +# \ Try .json at http://dottxt.co / +# ------------------------------- +# \ ^__^ +# \ (oo)\_______ +# (__)\ )\/\ +# ||----w | +# || || +# +# +# Copyright 2024- the Outlines developers # Copyright 2023 the vLLM developers - +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/outlines/serve/vllm.py b/outlines/serve/vllm.py index 6843fe8de..78c28138e 100644 --- a/outlines/serve/vllm.py +++ b/outlines/serve/vllm.py @@ -1,4 +1,28 @@ -"""Make vLLM compatible with Outlines' structured generation.""" +# Make vLLM compatible with Outlines' structured generation. +# +# _______________________________ +# / Don't want to self-host? \ +# \ Try .json at http://dottxt.co / +# ------------------------------- +# \ ^__^ +# \ (oo)\_______ +# (__)\ )\/\ +# ||----w | +# || || +# +# Copyright 2024- the Outlines developers +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import json import math from collections import defaultdict