From daa9ccae5215704e29cfea98a341d732987321b0 Mon Sep 17 00:00:00 2001 From: axiangcoding Date: Tue, 16 Jan 2024 03:14:44 +0800 Subject: [PATCH] community[patch]: deprecate ErnieBotChat and ErnieEmbeddings classes (#15862) - **Description:** add deprecated warning for ErnieBotChat and ErnieEmbeddings. - These two classes **lack maintenance** and do not use the sdk provided by qianfan, which means hard to implement some key feature like streaming. - The alternative `langchain_community.chat_models.QianfanChatEndpoint` and `langchain_community.embeddings.QianfanEmbeddingsEndpoint` can completely replace these two classes, only need to change configuration items. - **Issue:** None, - **Dependencies:** None, - **Twitter handle:** None --------- Co-authored-by: Bagatur --- docs/docs/integrations/chat/ernie.ipynb | 52 +++++++++++++++---- .../integrations/text_embedding/ernie.ipynb | 45 ++++++++++++++++ .../langchain_community/chat_models/ernie.py | 5 ++ .../langchain_community/embeddings/ernie.py | 5 ++ 4 files changed, 97 insertions(+), 10 deletions(-) diff --git a/docs/docs/integrations/chat/ernie.ipynb b/docs/docs/integrations/chat/ernie.ipynb index 17c5fb650cc..fd467c22276 100644 --- a/docs/docs/integrations/chat/ernie.ipynb +++ b/docs/docs/integrations/chat/ernie.ipynb @@ -16,29 +16,58 @@ "# ErnieBotChat\n", "\n", "[ERNIE-Bot](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/jlil56u11) is a large language model developed by Baidu, covering a huge amount of Chinese data.\n", - "This notebook covers how to get started with ErnieBot chat models.\n", + "This notebook covers how to get started with ErnieBot chat models." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Deprecated Warning**\n", + "\n", + "We recommend users using `langchain_community.chat_models.ErnieBotChat` \n", + "to use `langchain_community.chat_models.QianfanChatEndpoint` instead.\n", + "\n", + "documentation for `QianfanChatEndpoint` is [here](./baidu_qianfan_endpoint).\n", + "\n", + "they are 4 why we recommend users to use `QianfanChatEndpoint`:\n", "\n", - "**Note:** We recommend users using this class to switch to [Baidu Qianfan](./baidu_qianfan_endpoint). they are 3 why we recommend users to use `QianfanChatEndpoint`:\n", "1. `QianfanChatEndpoint` support more LLM in the Qianfan platform.\n", "2. `QianfanChatEndpoint` support streaming mode.\n", "3. `QianfanChatEndpoint` support function calling usgage.\n", - "\n", + "4. `ErnieBotChat` is lack of maintenance and deprecated." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "Some tips for migration:\n", + "\n", "- change `ernie_client_id` to `qianfan_ak`, also change `ernie_client_secret` to `qianfan_sk`.\n", - "- install `qianfan` package. \n", - " ```\n", - " pip install qianfan\n", - " ```" + "- install `qianfan` package. like `pip install qianfan`\n", + "- change `ErnieBotChat` to `QianfanChatEndpoint`." ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "from langchain.schema import HumanMessage\n", - "from langchain_community.chat_models import ErnieBotChat" + "from langchain_community.chat_models.baidu_qianfan_endpoint import QianfanChatEndpoint\n", + "\n", + "chat = QianfanChatEndpoint(\n", + " qianfan_ak=\"your qianfan ak\",\n", + " qianfan_sk=\"your qianfan sk\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Usage" ] }, { @@ -47,6 +76,9 @@ "metadata": {}, "outputs": [], "source": [ + "from langchain.schema import HumanMessage\n", + "from langchain_community.chat_models import ErnieBotChat\n", + "\n", "chat = ErnieBotChat(\n", " ernie_client_id=\"YOUR_CLIENT_ID\", ernie_client_secret=\"YOUR_CLIENT_SECRET\"\n", ")" diff --git a/docs/docs/integrations/text_embedding/ernie.ipynb b/docs/docs/integrations/text_embedding/ernie.ipynb index fb1d0d523ba..d04bc4b9602 100644 --- a/docs/docs/integrations/text_embedding/ernie.ipynb +++ b/docs/docs/integrations/text_embedding/ernie.ipynb @@ -10,6 +10,51 @@ "which converts text into a vector form represented by numerical values, and is used in text retrieval, information recommendation, knowledge mining and other scenarios." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Deprecated Warning**\n", + "\n", + "We recommend users using `langchain_community.embeddings.ErnieEmbeddings` \n", + "to use `langchain_community.embeddings.QianfanEmbeddingsEndpoint` instead.\n", + "\n", + "documentation for `QianfanEmbeddingsEndpoint` is [here](./baidu_qianfan_endpoint).\n", + "\n", + "they are 2 why we recommend users to use `QianfanEmbeddingsEndpoint`:\n", + "\n", + "1. `QianfanEmbeddingsEndpoint` support more embedding model in the Qianfan platform.\n", + "2. `ErnieEmbeddings` is lack of maintenance and deprecated." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Some tips for migration:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_community.embeddings import QianfanEmbeddingsEndpoint\n", + "\n", + "embeddings = QianfanEmbeddingsEndpoint(\n", + " qianfan_ak=\"your qianfan ak\",\n", + " qianfan_sk=\"your qianfan sk\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Usage" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/libs/community/langchain_community/chat_models/ernie.py b/libs/community/langchain_community/chat_models/ernie.py index 8d69669afc2..9954ef4272f 100644 --- a/libs/community/langchain_community/chat_models/ernie.py +++ b/libs/community/langchain_community/chat_models/ernie.py @@ -3,6 +3,7 @@ import threading from typing import Any, Dict, List, Mapping, Optional import requests +from langchain_core._api.deprecation import deprecated from langchain_core.callbacks import CallbackManagerForLLMRun from langchain_core.language_models.chat_models import BaseChatModel from langchain_core.messages import ( @@ -30,6 +31,10 @@ def _convert_message_to_dict(message: BaseMessage) -> dict: return message_dict +@deprecated( + since="0.0.13", + alternative="langchain_community.chat_models.QianfanChatEndpoint", +) class ErnieBotChat(BaseChatModel): """`ERNIE-Bot` large language model. diff --git a/libs/community/langchain_community/embeddings/ernie.py b/libs/community/langchain_community/embeddings/ernie.py index 5467e4c0278..b6bff742bd1 100644 --- a/libs/community/langchain_community/embeddings/ernie.py +++ b/libs/community/langchain_community/embeddings/ernie.py @@ -4,6 +4,7 @@ import threading from typing import Dict, List, Optional import requests +from langchain_core._api.deprecation import deprecated from langchain_core.embeddings import Embeddings from langchain_core.pydantic_v1 import BaseModel, root_validator from langchain_core.runnables.config import run_in_executor @@ -12,6 +13,10 @@ from langchain_core.utils import get_from_dict_or_env logger = logging.getLogger(__name__) +@deprecated( + since="0.0.13", + alternative="langchain_community.embeddings.QianfanEmbeddingsEndpoint", +) class ErnieEmbeddings(BaseModel, Embeddings): """`Ernie Embeddings V1` embedding models."""