diff options
author | Ben Sima <ben@bsima.me> | 2023-08-28 21:05:25 -0400 |
---|---|---|
committer | Ben Sima <ben@bsima.me> | 2023-09-20 17:56:12 -0400 |
commit | 6e4a65579c3ade76feea0890072099f0d0caf416 (patch) | |
tree | 95671321c951134753323978854cece5f7d5435b /Biz/Bild | |
parent | 13added53bbf996ec25a19b734326a6834918279 (diff) |
Prototype Mynion
This implements a prototype Mynion, my chatbot which will eventually
help me write code here. In fact he's already helping me, and works
pretty well over xmpp.
The prompt is currently not checked in because I'm experimenting with it
a lot, and it should probably be a runtime parameter anyways.
In the course of writing this I added some helper libraries to get me
going, configured black (didn't even know that was possible), and added
'outlines' and its dependencies even though I didn't end up using it.
I'll keep outlines around for now, but I'm not sure how useful it really
is because afaict its just pre-defining some stop conditions. But it
took a while to get it working so I'll just keep it in for now.
Diffstat (limited to 'Biz/Bild')
-rw-r--r-- | Biz/Bild/Builder.nix | 12 | ||||
-rw-r--r-- | Biz/Bild/Deps.nix | 3 | ||||
-rw-r--r-- | Biz/Bild/Deps/interegular.nix | 26 | ||||
-rw-r--r-- | Biz/Bild/Deps/outlines.nix | 49 | ||||
-rw-r--r-- | Biz/Bild/Deps/perscache.nix | 39 | ||||
-rw-r--r-- | Biz/Bild/Sources.json | 36 |
6 files changed, 162 insertions, 3 deletions
diff --git a/Biz/Bild/Builder.nix b/Biz/Bild/Builder.nix index 8f42733..f9eb31d 100644 --- a/Biz/Bild/Builder.nix +++ b/Biz/Bild/Builder.nix @@ -92,16 +92,22 @@ let python = bild.python.buildPythonApplication rec { inherit name src BIZ_ROOT; - propagatedBuildInputs = [ (bild.python.pythonWith (_: langdeps_)) ] ++ sysdeps_; + propagatedBuildInputs = langdeps_ ++ sysdeps_; buildInputs = sysdeps_; - checkInputs = [(bild.python.pythonWith (p: with p; [black mypy])) ruff]; + nativeCheckInputs = [ black mypy ruff ]; checkPhase = '' check() { $@ || { echo "fail: $name: $3"; exit 1; } } + cp ${../../pyproject.toml} ./pyproject.toml check python -m black --quiet --exclude 'setup\.py$' --check . check ${ruff}/bin/ruff check . - check python -m mypy --strict --no-error-summary --exclude 'setup\.py$' . + touch ./py.typed + check python -m mypy \ + --explicit-package-bases \ + --no-error-summary \ + --exclude 'setup\.py$' \ + . check python -m ${mainModule} test ''; preBuild = '' diff --git a/Biz/Bild/Deps.nix b/Biz/Bild/Deps.nix index da18d89..dcb7d50 100644 --- a/Biz/Bild/Deps.nix +++ b/Biz/Bild/Deps.nix @@ -36,6 +36,9 @@ in rec exllama = callPackage ./Deps/exllama.nix { cudaPackages = super.pkgs.cudaPackages_11_7; }; + interegular = callPackage ./Deps/interegular.nix {}; + outlines = callPackage ./Deps/outlines.nix {}; + perscache = callPackage ./Deps/perscache.nix {}; }; }; diff --git a/Biz/Bild/Deps/interegular.nix b/Biz/Bild/Deps/interegular.nix new file mode 100644 index 0000000..8b0bc86 --- /dev/null +++ b/Biz/Bild/Deps/interegular.nix @@ -0,0 +1,26 @@ +{ lib +, sources +, buildPythonPackage +}: + +buildPythonPackage rec { + pname = "interegular"; + version = sources.interegular.rev; + format = "setuptools"; + + src = sources.interegular; + + propagatedBuildInputs = [ ]; + + doCheck = false; # no tests currently + pythonImportsCheck = [ + "interegular" + ]; + + meta = with lib; { + description = "Allows to check regexes for overlaps."; + homepage = "https://github.com/MegaIng/interegular"; + license = licenses.mit; + maintainers = with maintainers; [ bsima ]; + }; +} diff --git a/Biz/Bild/Deps/outlines.nix b/Biz/Bild/Deps/outlines.nix new file mode 100644 index 0000000..013581b --- /dev/null +++ b/Biz/Bild/Deps/outlines.nix @@ -0,0 +1,49 @@ +{ lib +, sources +, buildPythonPackage +, interegular +, jinja2 +, lark +, numpy +, perscache +, pillow +, pydantic +, regex +, scipy +, tenacity +, torch +}: + +buildPythonPackage rec { + pname = "outlines"; + version = sources.outlines.rev; + format = "pyproject"; + + src = sources.outlines; + + propagatedBuildInputs = [ + interegular + jinja2 + lark + numpy + perscache + pillow + pydantic + regex + scipy + tenacity + torch + ]; + + doCheck = false; # no tests currently + pythonImportsCheck = [ + "outlines" + ]; + + meta = with lib; { + description = "Probabilistic Generative Model Programming"; + homepage = "https://github.com/normal-computing/outlines"; + license = licenses.asl20; + maintainers = with maintainers; [ bsima ]; + }; +} diff --git a/Biz/Bild/Deps/perscache.nix b/Biz/Bild/Deps/perscache.nix new file mode 100644 index 0000000..d757e1a --- /dev/null +++ b/Biz/Bild/Deps/perscache.nix @@ -0,0 +1,39 @@ +{ lib +, sources +, buildPythonPackage +, beartype +, cloudpickle +, icontract +, pbr +}: + +buildPythonPackage rec { + pname = "perscache"; + version = sources.perscache.rev; + + src = sources.perscache; + + propagatedBuildInputs = [ + beartype + cloudpickle + icontract + pbr + ]; + PBR_VERSION = version; + + doCheck = false; # no tests currently + pythonImportsCheck = [ + "perscache" + ]; + + meta = with lib; { + description = '' + An easy to use decorator for persistent memoization: like + `functools.lrucache`, but results can be saved in any format to any + storage. + ''; + homepage = "https://github.com/leshchenko1979/perscache"; + license = licenses.mit; + maintainers = with maintainers; [ bsima ]; + }; +} diff --git a/Biz/Bild/Sources.json b/Biz/Bild/Sources.json index e4fcfd4..6cc4d48 100644 --- a/Biz/Bild/Sources.json +++ b/Biz/Bild/Sources.json @@ -64,6 +64,18 @@ "url_template": "https://gitlab.com/kavalogic-inc/inspekt3d/-/archive/<version>/inspekt3d-<version>.tar.gz", "version": "703f52ccbfedad2bf5240bf8183d1b573c9d54ef" }, + "interegular": { + "branch": "master", + "description": "Allows to check regexes for overlaps. Based on greenery by @qntm.", + "homepage": null, + "owner": "MegaIng", + "repo": "interegular", + "rev": "v0.2.1", + "sha256": "14f3jvnczq6qay2qp4rxchbdhkj00qs8kpacl0nrxgr0785km36k", + "type": "tarball", + "url": "https://github.com/MegaIng/interegular/archive/v0.2.1.tar.gz", + "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz" + }, "llama-cpp": { "branch": "master", "description": "Port of Facebook's LLaMA model in C/C++", @@ -110,6 +122,30 @@ "url": "https://github.com/nixos/nixpkgs/archive/61676e4dcfeeb058f255294bcb08ea7f3bc3ce56.tar.gz", "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz" }, + "outlines": { + "branch": "main", + "description": "Generative Model Programming", + "homepage": "https://normal-computing.github.io/outlines/", + "owner": "normal-computing", + "repo": "outlines", + "rev": "0.0.8", + "sha256": "1yvx5c5kplmr56nffqcb6ssjnmlikkaw32hxl6i4b607v3s0s6jv", + "type": "tarball", + "url": "https://github.com/normal-computing/outlines/archive/0.0.8.tar.gz", + "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz" + }, + "perscache": { + "branch": "master", + "description": "An easy to use decorator for persistent memoization: like `functools.lrucache`, but results can be saved in any format to any storage.", + "homepage": null, + "owner": "leshchenko1979", + "repo": "perscache", + "rev": "0.6.1", + "sha256": "0j2775pjll4vw1wmxkjhnb5z6z83x5lhg89abj2d8ivd17n4rhjf", + "type": "tarball", + "url": "https://github.com/leshchenko1979/perscache/archive/0.6.1.tar.gz", + "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz" + }, "regex-applicative": { "branch": "master", "description": "Regex-based parsing with applicative interface", |