1{
2 lib,
3 async-timeout,
4 bash,
5 buildPythonPackage,
6 fetchFromGitHub,
7 freezegun,
8 langchain,
9 langchain-core,
10 openai,
11 tiktoken,
12 lark,
13 pandas,
14 poetry-core,
15 pytest-asyncio,
16 pytest-mock,
17 pytest-socket,
18 pytestCheckHook,
19 pythonOlder,
20 requests-mock,
21 responses,
22 syrupy,
23 toml,
24}:
25
26buildPythonPackage rec {
27 pname = "langchain-openai";
28 version = "0.1.17";
29 pyproject = true;
30
31 disabled = pythonOlder "3.8";
32
33 src = fetchFromGitHub {
34 owner = "langchain-ai";
35 repo = "langchain";
36 rev = "refs/tags/langchain-openai==${version}";
37 hash = "sha256-ELD1KXCVx3SmiJodagtOHgBGKdjRWiRVCCNYcL63eCY=";
38 };
39
40 sourceRoot = "${src.name}/libs/partners/openai";
41
42 preConfigure = ''
43 ln -s ${src}/libs/standard-tests/langchain_standard_tests ./langchain_standard_tests
44
45 substituteInPlace pyproject.toml \
46 --replace-fail "path = \"../../standard-tests\"" "path = \"./langchain_standard_tests\"" \
47 --replace-fail "--cov=langchain_openai" ""
48 '';
49
50 build-system = [ poetry-core ];
51
52 dependencies = [
53 langchain
54 langchain-core
55 openai
56 tiktoken
57 ];
58
59 nativeCheckInputs = [
60 freezegun
61 lark
62 pandas
63 pytest-asyncio
64 pytest-mock
65 pytest-socket
66 pytestCheckHook
67 requests-mock
68 responses
69 syrupy
70 toml
71 ];
72
73 pytestFlagsArray = [ "tests/unit_tests" ];
74
75 disabledTests = [
76 # These tests require network access
77 "test__get_encoding_model"
78 "test_get_token_ids"
79 "test_azure_openai_secrets"
80 "test_azure_openai_api_key_is_secret_string"
81 "test_get_num_tokens_from_messages"
82 "test_azure_openai_api_key_masked_when_passed_from_env"
83 "test_azure_openai_api_key_masked_when_passed_via_constructor"
84 "test_azure_openai_uses_actual_secret_value_from_secretstr"
85 "test_azure_serialized_secrets"
86 "test_openai_get_num_tokens"
87 "test_chat_openai_get_num_tokens"
88 ];
89
90 pythonImportsCheck = [ "langchain_openai" ];
91
92 passthru = {
93 updateScript = langchain-core.updateScript;
94 };
95
96 meta = {
97 changelog = "https://github.com/langchain-ai/langchain/releases/tag/langchain-openai==${version}";
98 description = "Integration package connecting OpenAI and LangChain";
99 homepage = "https://github.com/langchain-ai/langchain/tree/master/libs/partners/openai";
100 license = lib.licenses.mit;
101 maintainers = with lib.maintainers; [ natsukium ];
102 };
103}