aboutsummaryrefslogtreecommitdiff
path: root/pkgs/llmPython/default.nix
blob: 0f53218028909384c9d9f8af0ee279993966ae57 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
{
  pkgs,
  pkgsUnstable,
  lib,
  ...
}:
let
  # Define all packages in a recursive attribute set
  pythonPackages = rec {
    llm = pkgsUnstable.python3.pkgs.buildPythonPackage rec {
      pname = "llm";
      version = "0.24.2";
      format = "setuptools";

      src = pkgsUnstable.fetchurl {
        url = "https://files.pythonhosted.org/packages/source/l/llm/llm-0.24.2.tar.gz";
        sha256 = "sha256-4U8nIhg4hM4JaSIBtUzdlhlCSS8Nk8p0mmLQKzuL9Do=";
      };

      # Dependencies
      propagatedBuildInputs = with pkgsUnstable.python3.pkgs; [
        pyyaml
        click
        click-default-group
        condense-json
        openai
        pip
        pluggy
        puremagic
        pydantic
        python-ulid
        setuptools
        sqlite-migrate
        sqlite-utils
      ];

      # Disable tests - enable if you have specific test dependencies
      doCheck = false;

      # Basic import check
      pythonImportsCheck = [ "llm" ];

      meta = with lib; {
        description = "CLI utility and Python library for interacting with Large Language Models from organizations like OpenAI, Anthropic and Gemini plus local models installed on your own machine.";
        homepage = "https://github.com/simonw/llm";
        license = licenses.asl20;
      };
    };

    # Note, these are available in nixpkgs unstable, but are still behind the latest versions
    llm-anthropic = pkgsUnstable.python3.pkgs.buildPythonPackage rec {
      pname = "llm-anthropic";
      version = "0.15.1";
      format = "pyproject";

      src = pkgs.fetchurl {
        url = "https://files.pythonhosted.org/packages/source/l/llm_anthropic/llm_anthropic-0.15.1.tar.gz";
        sha256 = "sha256-C8xNs4oS51YxAn1iJkk8j4sJ5dO0pVOwIiP4mv/MnQk=";
      };

      nativeBuildInputs = with pkgsUnstable.python3.pkgs; [
        setuptools
        wheel
      ];
      # Dependencies
      propagatedBuildInputs = with pkgsUnstable.python3.pkgs; [
        anthropic
        llm # Use the llm we defined above
      ];

      # Disable tests - enable if you have specific test dependencies
      doCheck = false;

      # Basic import check
      pythonImportsCheck = [ "llm_anthropic" ];

      meta = with lib; {
        description = "LLM access to models by Anthropic, including the Claude series";
        homepage = "https://github.com/simonw/llm-anthropic";
        license = licenses.asl20;
      };
    };
  };
in
pythonPackages