diff --git a/docs/docs/integrations/document_loaders/google_el_carro.ipynb b/docs/docs/integrations/document_loaders/google_el_carro.ipynb index 9a70bdaf813..e2a23872ef0 100644 --- a/docs/docs/integrations/document_loaders/google_el_carro.ipynb +++ b/docs/docs/integrations/document_loaders/google_el_carro.ipynb @@ -2,9 +2,6 @@ "cells": [ { "cell_type": "markdown", - "metadata": { - "id": "NKbPFu-GWFDV" - }, "source": [ "# Google El Carro Oracle Operator\n", ">\n", @@ -13,14 +10,18 @@ "community driven, no vendor lock-in container orchestration system. El Carro\n", "provides a powerful declarative API for comprehensive and consistent\n", "configuration and deployment as well as for real-time operations and\n", - "monitoring..\n", - "Extend your database application to build AI-powered experiences leveraging\n", - "Oracle Langchain integrations.\n", + "monitoring.\n", + "Extend your Oracle database's capabilities to build AI-powered experiences by\n", + "leveraging the El Carro Langchain integration.\n", "\n", "This guide goes over how to use El Carro Langchain integration to\n", "[save, load and delete langchain documents](https://python.langchain.com/docs/modules/data_connection/document_loaders/)\n", - "with `ElCarroLoader` and `ElCarroDocumentSaver`." - ] + "with `ElCarroLoader` and `ElCarroDocumentSaver`. This integration works for\n", + "any Oracle database, regardless of where it is running." + ], + "metadata": { + "collapsed": false + } }, { "cell_type": "markdown", @@ -68,16 +69,61 @@ "## Basic Usage\n", "\n", "### Set Up Oracle Database Connection\n", - "\n", - "ElCarroEngine configures a connection pool to your Oracle database,\n", - "enabling successful connections from your application and following industry\n", - "best practices.\n", - "\n", - "You can find the hostname and port values in the status of the El Carro\n", - "Kubernetes instance.\n", - "Use the user password you created for your PDB." + "Fill out the following variable with your Oracle database connections details." ] }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "# @title Set Your Values Here { display-mode: \"form\" }\n", + "HOST = \"127.0.0.1\" # @param {type: \"string\"}\n", + "PORT = 3307 # @param {type: \"integer\"}\n", + "DATABASE = \"my-database\" # @param {type: \"string\"}\n", + "TABLE_NAME = \"message_store\" # @param {type: \"string\"}\n", + "USER = \"my-user\" # @param {type: \"string\"}\n", + "PASSWORD = input(\"Please provide a password to be used for the database user: \")" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "markdown", + "source": [ + "\n", + "If you are using El Carro, you can find the hostname and port values in the\n", + "status of the El Carro Kubernetes instance.\n", + "Use the user password you created for your PDB.\n", + "Example" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "markdown", + "source": [ + "kubectl get -w instances.oracle.db.anthosapis.com -n db\n", + "NAME DB ENGINE VERSION EDITION ENDPOINT URL DB NAMES BACKUP ID READYSTATUS READYREASON DBREADYSTATUS DBREADYREASON\n", + "mydb Oracle 18c Express mydb-svc.db 34.71.69.25:6021 False CreateInProgress" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "markdown", + "source": [ + "### ElCarroEngine Connection Pool\n", + "\n", + "`ElCarroEngine` configures a connection pool to your Oracle database, enabling successful connections from your application and following industry best practices." + ], + "metadata": { + "collapsed": false + } + }, { "cell_type": "code", "execution_count": null, @@ -362,7 +408,8 @@ " elcarro_engine=elcarro_engine,\n", " TABLE_NAME=TABLE_NAME,\n", ")\n", - "loader.load()" + "loaded_docs = loader.load()\n", + "print(f\"Loaded Documents: [{loaded_docs}]\")" ] }, { @@ -421,10 +468,10 @@ "specify the list of `metadata_columns` we want it to have. In this example, the\n", "created table will have table columns:\n", "\n", - "- description (type: text): for storing fruit description.\n", - "- fruit_name (type text): for storing fruit name.\n", - "- organic (type tinyint(1)): to tell if the fruit is organic.\n", - "- other_metadata (type: JSON): for storing other metadata information of the\n", + "- content (type: text): for storing fruit description.\n", + "- type (type text): for storing fruit type.\n", + "- weight (type INT): for storing fruit weight.\n", + "- extra_json_metadata (type: JSON): for storing other metadata information of the\n", " fruit.\n", "\n", "We can use the following parameters\n", diff --git a/docs/docs/integrations/memory/google_el_carro.ipynb b/docs/docs/integrations/memory/google_el_carro.ipynb index 10780c74ca6..c6a0bf9794c 100644 --- a/docs/docs/integrations/memory/google_el_carro.ipynb +++ b/docs/docs/integrations/memory/google_el_carro.ipynb @@ -1,368 +1,393 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Google El Carro Oracle Operator\n", - "\n", - "> Google [El Carro Oracle Operator](https://github.com/GoogleCloudPlatform/elcarro-oracle-operator) offers a way to run Oracle databases in Kubernetes as a portable, open source, community driven, no vendor lock-in container orchestration system. El Carro provides a powerful declarative API for comprehensive and consistent configuration and deployment as well as for real-time operations and monitoring. Extend your database application to build AI-powered experiences leveraging Oracle Langchain integrations.\n", - "\n", - "This guide goes over how to use the El Carro Langchain integration to store chat message history with the `ElCarroChatMessageHistory` class.\n", - "\n", - "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-el-carro-python/blob/main/docs/chat_message_history.ipynb)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Before You Begin\n", - "\n", - "To run this notebook, you will need to do the following:\n", - " * Complete the [Getting Started](https://github.com/googleapis/langchain-google-el-carro-python/tree/main/README.md#getting-started) section" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 🦜🔗 Library Installation\n", - "The integration lives in its own `langchain-google-el-carro` package, so we need to install it." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%pip install --upgrade --quiet langchain-google-el-carro langchain-google-vertexai langchain" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Colab only:** Uncomment the following cell to restart the kernel or use the button to restart the kernel. For Vertex AI Workbench you can restart the terminal using the button on top." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# # Automatically restart kernel after installs so that your environment can access the new packages\n", - "# import IPython\n", - "\n", - "# app = IPython.Application.instance()\n", - "# app.kernel.do_shutdown(True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 🔐 Authentication\n", - "Authenticate to Google Cloud as the IAM user logged into this notebook in order to access your Google Cloud Project.\n", - "\n", - "* If you are using Colab to run this notebook, use the cell below and continue.\n", - "* If you are using Vertex AI Workbench, check out the setup instructions [here](https://github.com/GoogleCloudPlatform/generative-ai/tree/main/setup-env)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from google.colab import auth\n", - "\n", - "auth.authenticate_user()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### ☁ Set Your Google Cloud Project\n", - "Set your Google Cloud project so that you can leverage Google Cloud resources within this notebook.\n", - "\n", - "If you don't know your project ID, try the following:\n", - "\n", - "* Run `gcloud config list`.\n", - "* Run `gcloud projects list`.\n", - "* See the support page: [Locate the project ID](https://support.google.com/googleapi/answer/7014113)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# @markdown Please fill in the value below with your Google Cloud project ID and then run the cell.\n", - "\n", - "PROJECT_ID = \"my-project-id\" # @param {type:\"string\"}\n", - "\n", - "# Set the project id\n", - "!gcloud config set project {PROJECT_ID}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Basic Usage" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Set Up Oracle Database Connection\n", - "You can find the hostname and port values in the status of the El Carro\n", - "Kubernetes instance. Use the user password you created for your PDB." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# @title Set Your Values Here { display-mode: \"form\" }\n", - "HOST = \"127.0.0.1\" # @param {type: \"string\"}\n", - "PORT = 3307 # @param {type: \"integer\"}\n", - "DATABASE = \"my-database\" # @param {type: \"string\"}\n", - "TABLE_NAME = \"message_store\" # @param {type: \"string\"}\n", - "USER = \"my-user\" # @param {type: \"string\"}\n", - "PASSWORD = input(\"Please provide a password to be used for the database user: \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### ElCarroEngine Connection Pool\n", - "\n", - "`ElCarroEngine` configures a connection pool to your Oracle database, enabling successful connections from your application and following industry best practices." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_google_el_carro import ElCarroEngine\n", - "\n", - "elcarro_engine = ElCarroEngine.from_instance(\n", - " db_host=HOST,\n", - " db_port=PORT,\n", - " db_name=DATABASE,\n", - " db_user=USER,\n", - " db_password=PASSWORD,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Initialize a table\n", - "The `ElCarroChatMessageHistory` class requires a database table with a specific\n", - "schema in order to store the chat message history.\n", - "\n", - "The `ElCarroEngine` class has a\n", - "method `init_chat_history_table()` that can be used to create a table with the\n", - "proper schema for you." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "elcarro_engine.init_chat_history_table(table_name=TABLE_NAME)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### ElCarroChatMessageHistory\n", - "\n", - "To initialize the `ElCarroChatMessageHistory` class you need to provide only 3\n", - "things:\n", - "\n", - "1. `elcarro_engine` - An instance of an `ElCarroEngine` engine.\n", - "1. `session_id` - A unique identifier string that specifies an id for the\n", - " session.\n", - "1. `table_name` : The name of the table within the Oracle database to store the\n", - " chat message history." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_google_el_carro import ElCarroChatMessageHistory\n", - "\n", - "history = ElCarroChatMessageHistory(\n", - " elcarro_engine=elcarro_engine, session_id=\"test_session\", table_name=TABLE_NAME\n", - ")\n", - "history.add_user_message(\"hi!\")\n", - "history.add_ai_message(\"whats up?\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "history.messages" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Cleaning up\n", - "When the history of a specific session is obsolete and can be deleted, it can be done the following way.\n", - "\n", - "**Note:** Once deleted, the data is no longer stored in AlloyDB and is gone forever." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "history.clear()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 🔗 Chaining\n", - "\n", - "We can easily combine this message history class with [LCEL Runnables](/docs/expression_language/how_to/message_history)\n", - "\n", - "To do this we will use one of [Google's Vertex AI chat models](https://python.langchain.com/docs/integrations/chat/google_vertex_ai_palm) which requires that you [enable the Vertex AI API](https://console.cloud.google.com/flows/enableapi?apiid=aiplatform.googleapis.com) in your Google Cloud Project.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# enable Vertex AI API\n", - "!gcloud services enable aiplatform.googleapis.com" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder\n", - "from langchain_core.runnables.history import RunnableWithMessageHistory\n", - "from langchain_google_vertexai import ChatVertexAI" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "prompt = ChatPromptTemplate.from_messages(\n", - " [\n", - " (\"system\", \"You are a helpful assistant.\"),\n", - " MessagesPlaceholder(variable_name=\"history\"),\n", - " (\"human\", \"{question}\"),\n", - " ]\n", - ")\n", - "\n", - "chain = prompt | ChatVertexAI(project=PROJECT_ID)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "chain_with_history = RunnableWithMessageHistory(\n", - " chain,\n", - " lambda session_id: ElCarroChatMessageHistory(\n", - " elcarro_engine,\n", - " session_id=session_id,\n", - " table_name=TABLE_NAME,\n", - " ),\n", - " input_messages_key=\"question\",\n", - " history_messages_key=\"history\",\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# This is where we configure the session id\n", - "config = {\"configurable\": {\"session_id\": \"test_session\"}}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "chain_with_history.invoke({\"question\": \"Hi! I'm bob\"}, config=config)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "chain_with_history.invoke({\"question\": \"Whats my name\"}, config=config)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.5" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Google El Carro Oracle Operator\n", + "\n", + "> Google [El Carro Oracle Operator](https://github.com/GoogleCloudPlatform/elcarro-oracle-operator) offers a way to run Oracle databases in Kubernetes as a portable, open source, community driven, no vendor lock-in container orchestration system. El Carro provides a powerful declarative API for comprehensive and consistent configuration and deployment as well as for real-time operations and monitoring. Extend your Oracle database's capabilities to build AI-powered experiences by leveraging the El Carro Langchain integration.\n", + "\n", + "This guide goes over how to use the El Carro Langchain integration to store chat message history with the `ElCarroChatMessageHistory` class. This integration works for any Oracle database, regardless of where it is running.\n", + "\n", + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googleapis/langchain-google-el-carro-python/blob/main/docs/chat_message_history.ipynb)" + ] }, - "nbformat": 4, - "nbformat_minor": 4 + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Before You Begin\n", + "\n", + "To run this notebook, you will need to do the following:\n", + " * Complete the [Getting Started](https://github.com/googleapis/langchain-google-el-carro-python/tree/main/README.md#getting-started) section if you would like to run your Oracle database with El Carro." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 🦜🔗 Library Installation\n", + "The integration lives in its own `langchain-google-el-carro` package, so we need to install it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%pip install --upgrade --quiet langchain-google-el-carro langchain-google-vertexai langchain" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Colab only:** Uncomment the following cell to restart the kernel or use the button to restart the kernel. For Vertex AI Workbench you can restart the terminal using the button on top." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# # Automatically restart kernel after installs so that your environment can access the new packages\n", + "# import IPython\n", + "\n", + "# app = IPython.Application.instance()\n", + "# app.kernel.do_shutdown(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 🔐 Authentication\n", + "Authenticate to Google Cloud as the IAM user logged into this notebook in order to access your Google Cloud Project.\n", + "\n", + "* If you are using Colab to run this notebook, use the cell below and continue.\n", + "* If you are using Vertex AI Workbench, check out the setup instructions [here](https://github.com/GoogleCloudPlatform/generative-ai/tree/main/setup-env)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from google.colab import auth\n", + "\n", + "auth.authenticate_user()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ☁ Set Your Google Cloud Project\n", + "Set your Google Cloud project so that you can leverage Google Cloud resources within this notebook.\n", + "\n", + "If you don't know your project ID, try the following:\n", + "\n", + "* Run `gcloud config list`.\n", + "* Run `gcloud projects list`.\n", + "* See the support page: [Locate the project ID](https://support.google.com/googleapi/answer/7014113)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# @markdown Please fill in the value below with your Google Cloud project ID and then run the cell.\n", + "\n", + "PROJECT_ID = \"my-project-id\" # @param {type:\"string\"}\n", + "\n", + "# Set the project id\n", + "!gcloud config set project {PROJECT_ID}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Basic Usage" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Set Up Oracle Database Connection\n", + "Fill out the following variable with your Oracle database connections details." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "# @title Set Your Values Here { display-mode: \"form\" }\n", + "HOST = \"127.0.0.1\" # @param {type: \"string\"}\n", + "PORT = 3307 # @param {type: \"integer\"}\n", + "DATABASE = \"my-database\" # @param {type: \"string\"}\n", + "TABLE_NAME = \"message_store\" # @param {type: \"string\"}\n", + "USER = \"my-user\" # @param {type: \"string\"}\n", + "PASSWORD = input(\"Please provide a password to be used for the database user: \")" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "markdown", + "source": [ + "\n", + "If you are using `El Carro`, you can find the hostname and port values in the\n", + "status of the `El Carro` Kubernetes instance.\n", + "Use the user password you created for your PDB.\n", + "Example" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "markdown", + "source": [ + "kubectl get -w instances.oracle.db.anthosapis.com -n db\n", + "NAME DB ENGINE VERSION EDITION ENDPOINT URL DB NAMES BACKUP ID READYSTATUS READYREASON DBREADYSTATUS DBREADYREASON\n", + "mydb Oracle 18c Express mydb-svc.db 34.71.69.25:6021 False CreateInProgress" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ElCarroEngine Connection Pool\n", + "\n", + "`ElCarroEngine` configures a connection pool to your Oracle database, enabling successful connections from your application and following industry best practices." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_google_el_carro import ElCarroEngine\n", + "\n", + "elcarro_engine = ElCarroEngine.from_instance(\n", + " db_host=HOST,\n", + " db_port=PORT,\n", + " db_name=DATABASE,\n", + " db_user=USER,\n", + " db_password=PASSWORD,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Initialize a table\n", + "The `ElCarroChatMessageHistory` class requires a database table with a specific\n", + "schema in order to store the chat message history.\n", + "\n", + "The `ElCarroEngine` class has a\n", + "method `init_chat_history_table()` that can be used to create a table with the\n", + "proper schema for you." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "elcarro_engine.init_chat_history_table(table_name=TABLE_NAME)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ElCarroChatMessageHistory\n", + "\n", + "To initialize the `ElCarroChatMessageHistory` class you need to provide only 3\n", + "things:\n", + "\n", + "1. `elcarro_engine` - An instance of an `ElCarroEngine` engine.\n", + "1. `session_id` - A unique identifier string that specifies an id for the\n", + " session.\n", + "1. `table_name` : The name of the table within the Oracle database to store the\n", + " chat message history." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_google_el_carro import ElCarroChatMessageHistory\n", + "\n", + "history = ElCarroChatMessageHistory(\n", + " elcarro_engine=elcarro_engine, session_id=\"test_session\", table_name=TABLE_NAME\n", + ")\n", + "history.add_user_message(\"hi!\")\n", + "history.add_ai_message(\"whats up?\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "history.messages" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Cleaning up\n", + "When the history of a specific session is obsolete and can be deleted, it can be done the following way.\n", + "\n", + "**Note:** Once deleted, the data is no longer stored in your database and is gone forever." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "history.clear()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 🔗 Chaining\n", + "\n", + "We can easily combine this message history class with [LCEL Runnables](/docs/expression_language/how_to/message_history)\n", + "\n", + "To do this we will use one of [Google's Vertex AI chat models](https://python.langchain.com/docs/integrations/chat/google_vertex_ai_palm) which requires that you [enable the Vertex AI API](https://console.cloud.google.com/flows/enableapi?apiid=aiplatform.googleapis.com) in your Google Cloud Project.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# enable Vertex AI API\n", + "!gcloud services enable aiplatform.googleapis.com" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder\n", + "from langchain_core.runnables.history import RunnableWithMessageHistory\n", + "from langchain_google_vertexai import ChatVertexAI" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "prompt = ChatPromptTemplate.from_messages(\n", + " [\n", + " (\"system\", \"You are a helpful assistant.\"),\n", + " MessagesPlaceholder(variable_name=\"history\"),\n", + " (\"human\", \"{question}\"),\n", + " ]\n", + ")\n", + "\n", + "chain = prompt | ChatVertexAI(project=PROJECT_ID)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "chain_with_history = RunnableWithMessageHistory(\n", + " chain,\n", + " lambda session_id: ElCarroChatMessageHistory(\n", + " elcarro_engine,\n", + " session_id=session_id,\n", + " table_name=TABLE_NAME,\n", + " ),\n", + " input_messages_key=\"question\",\n", + " history_messages_key=\"history\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# This is where we configure the session id\n", + "config = {\"configurable\": {\"session_id\": \"test_session\"}}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "chain_with_history.invoke({\"question\": \"Hi! I'm bob\"}, config=config)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "chain_with_history.invoke({\"question\": \"Whats my name\"}, config=config)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/docs/docs/integrations/platforms/google.mdx b/docs/docs/integrations/platforms/google.mdx index 6584ae2c28f..c504ab65c29 100644 --- a/docs/docs/integrations/platforms/google.mdx +++ b/docs/docs/integrations/platforms/google.mdx @@ -236,6 +236,22 @@ See a [usage example](/docs/integrations/document_loaders/google_cloud_storage_f from langchain_community.document_loaders import GCSFileLoader ``` +### El Carro for Oracle Workloads + +> Google [El Carro Oracle Operator](https://github.com/GoogleCloudPlatform/elcarro-oracle-operator) +offers a way to run Oracle databases in Kubernetes as a portable, open source, +community driven, no vendor lock-in container orchestration system. + +```bash +pip install langchain-google-el-carro +``` + +See [usage example](/docs/integrations/document_loaders/google_el_carro). + +```python +from langchain_google_el_carro import ElCarroLoader +``` + ### Google Drive >[Google Drive](https://en.wikipedia.org/wiki/Google_Drive) is a file storage and synchronization service developed by Google. @@ -315,22 +331,6 @@ See [usage example](/docs/integrations/document_loaders/google_spanner). from langchain_google_spanner import SpannerLoader ``` -## El Carro Oracle Operator - -> Google [El Carro Oracle Operator](https://github.com/GoogleCloudPlatform/elcarro-oracle-operator) -offers a way to run Oracle databases in Kubernetes as a portable, open source, -community driven, no vendor lock-in container orchestration system. - -```bash -pip install langchain-google-el-carro -``` - -See [usage example](/docs/integrations/document_loaders/google_el_carro). - -```python -from langchain_google_el_carro import ElCarroLoader -``` - ### Speech-to-Text > [Google Cloud Speech-to-Text](https://cloud.google.com/speech-to-text) is an audio transcription API powered by Google's speech recognition models in Google Cloud. @@ -737,7 +737,7 @@ from langchain_community.agent_toolkits import GmailToolkit ### AlloyDB for PostgreSQL -> [AlloyDB](https://cloud.google.com/alloydb) is a fully managed relational database service that offers high performance, seamless integration, and impressive scalability on Google Cloud. AlloyDB is 100% compatible with PostgreSQL. +> [AlloyDB for PostgreSQL](https://cloud.google.com/alloydb) is a fully managed relational database service that offers high performance, seamless integration, and impressive scalability on Google Cloud. AlloyDB is 100% compatible with PostgreSQL. Install the python package: @@ -797,6 +797,22 @@ See [usage example](/docs/integrations/memory/google_cloud_sql_mssql). from langchain_google_cloud_sql_mssql import MSSQLEngine, MSSQLChatMessageHistory ``` +## El Carro for Oracle Workloads + +> Google [El Carro Oracle Operator](https://github.com/GoogleCloudPlatform/elcarro-oracle-operator) +offers a way to run Oracle databases in Kubernetes as a portable, open source, +community driven, no vendor lock-in container orchestration system. + +```bash +pip install langchain-google-el-carro +``` + +See [usage example](/docs/integrations/memory/google_el_carro). + +```python +from langchain_google_el_carro import ElCarroChatMessageHistory +``` + ### Spanner > [Google Cloud Spanner](https://cloud.google.com/spanner/docs) is a fully managed, mission-critical, relational database service on Google Cloud that offers transactional consistency at global scale, automatic, synchronous replication for high availability, and support for two SQL dialects: GoogleSQL (ANSI 2011 with extensions) and PostgreSQL.