From 08b769d539a7ca7f259048f0e4d13b768452ee89 Mon Sep 17 00:00:00 2001 From: Dmitry Tyumentsev <56769451+tyumentsev4@users.noreply.github.com> Date: Tue, 26 Mar 2024 03:05:57 +0300 Subject: [PATCH] community[patch]: YandexGPT Use recent yandexcloud sdk version (#19341) Fixed inability to work with [yandexcloud SDK](https://pypi.org/project/yandexcloud/) version higher 0.265.0 --- docs/docs/integrations/chat/yandex.ipynb | 2 +- docs/docs/integrations/llms/yandex.ipynb | 2 +- .../langchain_community/chat_models/yandex.py | 69 +++++++++++++------ .../embeddings/__init__.py | 1 + .../langchain_community/embeddings/yandex.py | 21 ++++-- .../langchain_community/llms/yandex.py | 69 +++++++++++++------ .../unit_tests/embeddings/test_imports.py | 1 + 7 files changed, 115 insertions(+), 50 deletions(-) diff --git a/docs/docs/integrations/chat/yandex.ipynb b/docs/docs/integrations/chat/yandex.ipynb index 403a97dae71..ebe3e01195a 100644 --- a/docs/docs/integrations/chat/yandex.ipynb +++ b/docs/docs/integrations/chat/yandex.ipynb @@ -90,7 +90,7 @@ } ], "source": [ - "answer = chat_model(\n", + "answer = chat_model.invoke(\n", " [\n", " SystemMessage(\n", " content=\"You are a helpful assistant that translates English to French.\"\n", diff --git a/docs/docs/integrations/llms/yandex.ipynb b/docs/docs/integrations/llms/yandex.ipynb index 42093fec896..2a91a7f7f42 100644 --- a/docs/docs/integrations/llms/yandex.ipynb +++ b/docs/docs/integrations/llms/yandex.ipynb @@ -96,7 +96,7 @@ "source": [ "country = \"Russia\"\n", "\n", - "llm_chain.run(country)" + "llm_chain.invoke(country)" ] } ], diff --git a/libs/community/langchain_community/chat_models/yandex.py b/libs/community/langchain_community/chat_models/yandex.py index a596620840e..61ae77a4713 100644 --- a/libs/community/langchain_community/chat_models/yandex.py +++ b/libs/community/langchain_community/chat_models/yandex.py @@ -127,16 +127,29 @@ def _make_request( try: import grpc from google.protobuf.wrappers_pb2 import DoubleValue, Int64Value - from yandex.cloud.ai.foundation_models.v1.foundation_models_pb2 import ( - CompletionOptions, - Message, - ) - from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2 import ( # noqa: E501 - CompletionRequest, - ) - from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2_grpc import ( # noqa: E501 - TextGenerationServiceStub, - ) + + try: + from yandex.cloud.ai.foundation_models.v1.text_common_pb2 import ( + CompletionOptions, + Message, + ) + from yandex.cloud.ai.foundation_models.v1.text_generation.text_generation_service_pb2 import ( # noqa: E501 + CompletionRequest, + ) + from yandex.cloud.ai.foundation_models.v1.text_generation.text_generation_service_pb2_grpc import ( # noqa: E501 + TextGenerationServiceStub, + ) + except ModuleNotFoundError: + from yandex.cloud.ai.foundation_models.v1.foundation_models_pb2 import ( + CompletionOptions, + Message, + ) + from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2 import ( # noqa: E501 + CompletionRequest, + ) + from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2_grpc import ( # noqa: E501 + TextGenerationServiceStub, + ) except ImportError as e: raise ImportError( "Please install YandexCloud SDK with `pip install yandexcloud` \ @@ -166,17 +179,31 @@ async def _amake_request(self: ChatYandexGPT, messages: List[BaseMessage]) -> st import grpc from google.protobuf.wrappers_pb2 import DoubleValue, Int64Value - from yandex.cloud.ai.foundation_models.v1.foundation_models_pb2 import ( - CompletionOptions, - Message, - ) - from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2 import ( # noqa: E501 - CompletionRequest, - CompletionResponse, - ) - from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2_grpc import ( # noqa: E501 - TextGenerationAsyncServiceStub, - ) + + try: + from yandex.cloud.ai.foundation_models.v1.text_common_pb2 import ( + CompletionOptions, + Message, + ) + from yandex.cloud.ai.foundation_models.v1.text_generation.text_generation_service_pb2 import ( # noqa: E501 + CompletionRequest, + CompletionResponse, + ) + from yandex.cloud.ai.foundation_models.v1.text_generation.text_generation_service_pb2_grpc import ( # noqa: E501 + TextGenerationAsyncServiceStub, + ) + except ModuleNotFoundError: + from yandex.cloud.ai.foundation_models.v1.foundation_models_pb2 import ( + CompletionOptions, + Message, + ) + from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2 import ( # noqa: E501 + CompletionRequest, + CompletionResponse, + ) + from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2_grpc import ( # noqa: E501 + TextGenerationAsyncServiceStub, + ) from yandex.cloud.operation.operation_service_pb2 import GetOperationRequest from yandex.cloud.operation.operation_service_pb2_grpc import ( OperationServiceStub, diff --git a/libs/community/langchain_community/embeddings/__init__.py b/libs/community/langchain_community/embeddings/__init__.py index 33cf7fce17b..93d4b817bc8 100644 --- a/libs/community/langchain_community/embeddings/__init__.py +++ b/libs/community/langchain_community/embeddings/__init__.py @@ -80,6 +80,7 @@ _module_lookup = { "VolcanoEmbeddings": "langchain_community.embeddings.volcengine", "VoyageEmbeddings": "langchain_community.embeddings.voyageai", "XinferenceEmbeddings": "langchain_community.embeddings.xinference", + "YandexGPTEmbeddings": "langchain_community.embeddings.yandex", } diff --git a/libs/community/langchain_community/embeddings/yandex.py b/libs/community/langchain_community/embeddings/yandex.py index 34f71feafae..4183a3284cf 100644 --- a/libs/community/langchain_community/embeddings/yandex.py +++ b/libs/community/langchain_community/embeddings/yandex.py @@ -149,12 +149,21 @@ def _embed_with_retry(llm: YandexGPTEmbeddings, **kwargs: Any) -> Any: def _make_request(self: YandexGPTEmbeddings, texts: List[str]): # type: ignore[no-untyped-def] try: import grpc - from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2 import ( # noqa: E501 - TextEmbeddingRequest, - ) - from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2_grpc import ( # noqa: E501 - EmbeddingsServiceStub, - ) + + try: + from yandex.cloud.ai.foundation_models.v1.embedding.embedding_service_pb2 import ( # noqa: E501 + TextEmbeddingRequest, + ) + from yandex.cloud.ai.foundation_models.v1.embedding.embedding_service_pb2_grpc import ( # noqa: E501 + EmbeddingsServiceStub, + ) + except ModuleNotFoundError: + from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2 import ( # noqa: E501 + TextEmbeddingRequest, + ) + from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2_grpc import ( # noqa: E501 + EmbeddingsServiceStub, + ) except ImportError as e: raise ImportError( "Please install YandexCloud SDK with `pip install yandexcloud` \ diff --git a/libs/community/langchain_community/llms/yandex.py b/libs/community/langchain_community/llms/yandex.py index 228333d5a72..da529a204ca 100644 --- a/libs/community/langchain_community/llms/yandex.py +++ b/libs/community/langchain_community/llms/yandex.py @@ -186,16 +186,29 @@ def _make_request( try: import grpc from google.protobuf.wrappers_pb2 import DoubleValue, Int64Value - from yandex.cloud.ai.foundation_models.v1.foundation_models_pb2 import ( - CompletionOptions, - Message, - ) - from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2 import ( # noqa: E501 - CompletionRequest, - ) - from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2_grpc import ( # noqa: E501 - TextGenerationServiceStub, - ) + + try: + from yandex.cloud.ai.foundation_models.v1.text_common_pb2 import ( + CompletionOptions, + Message, + ) + from yandex.cloud.ai.foundation_models.v1.text_generation.text_generation_service_pb2 import ( # noqa: E501 + CompletionRequest, + ) + from yandex.cloud.ai.foundation_models.v1.text_generation.text_generation_service_pb2_grpc import ( # noqa: E501 + TextGenerationServiceStub, + ) + except ModuleNotFoundError: + from yandex.cloud.ai.foundation_models.v1.foundation_models_pb2 import ( + CompletionOptions, + Message, + ) + from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2 import ( # noqa: E501 + CompletionRequest, + ) + from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2_grpc import ( # noqa: E501 + TextGenerationServiceStub, + ) except ImportError as e: raise ImportError( "Please install YandexCloud SDK with `pip install yandexcloud` \ @@ -222,17 +235,31 @@ async def _amake_request(self: YandexGPT, prompt: str) -> str: import grpc from google.protobuf.wrappers_pb2 import DoubleValue, Int64Value - from yandex.cloud.ai.foundation_models.v1.foundation_models_pb2 import ( - CompletionOptions, - Message, - ) - from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2 import ( # noqa: E501 - CompletionRequest, - CompletionResponse, - ) - from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2_grpc import ( # noqa: E501 - TextGenerationAsyncServiceStub, - ) + + try: + from yandex.cloud.ai.foundation_models.v1.text_common_pb2 import ( + CompletionOptions, + Message, + ) + from yandex.cloud.ai.foundation_models.v1.text_generation.text_generation_service_pb2 import ( # noqa: E501 + CompletionRequest, + CompletionResponse, + ) + from yandex.cloud.ai.foundation_models.v1.text_generation.text_generation_service_pb2_grpc import ( # noqa: E501 + TextGenerationAsyncServiceStub, + ) + except ModuleNotFoundError: + from yandex.cloud.ai.foundation_models.v1.foundation_models_pb2 import ( + CompletionOptions, + Message, + ) + from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2 import ( # noqa: E501 + CompletionRequest, + CompletionResponse, + ) + from yandex.cloud.ai.foundation_models.v1.foundation_models_service_pb2_grpc import ( # noqa: E501 + TextGenerationAsyncServiceStub, + ) from yandex.cloud.operation.operation_service_pb2 import GetOperationRequest from yandex.cloud.operation.operation_service_pb2_grpc import ( OperationServiceStub, diff --git a/libs/community/tests/unit_tests/embeddings/test_imports.py b/libs/community/tests/unit_tests/embeddings/test_imports.py index 3e3ed33d9f0..1ed14d49e0b 100644 --- a/libs/community/tests/unit_tests/embeddings/test_imports.py +++ b/libs/community/tests/unit_tests/embeddings/test_imports.py @@ -65,6 +65,7 @@ EXPECTED_ALL = [ "QuantizedBiEncoderEmbeddings", "NeMoEmbeddings", "SparkLLMTextEmbeddings", + "YandexGPTEmbeddings", ]