Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Javelin #10275

Merged
merged 39 commits into from
Sep 20, 2023
Merged

Javelin #10275

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
608fddd
Initial commit for javelin ai gateway
rsharath Sep 3, 2023
04ab8ee
Merge remote-tracking branch 'origin/master' into javelin
rsharath Sep 5, 2023
8bd2b3e
Merge remote-tracking branch 'origin/master' into javelin
rsharath Sep 5, 2023
87ac0bf
Merge remote-tracking branch 'origin/master' into javelin
rsharath Sep 6, 2023
6025223
updated all the libs after runnign through testing
rsharath Sep 6, 2023
c03caba
updated docs
rsharath Sep 6, 2023
85c4b56
updates to javelin
rsharath Sep 6, 2023
8fef583
Merge remote-tracking branch 'origin/master' into javelin
rsharath Sep 6, 2023
b8ee5cd
fixed typo
rsharath Sep 7, 2023
35436f8
Diffbot Graph Transformer / Neo4j Graph document ingestion (#9979)
tomasonjo Sep 6, 2023
d2d1fbd
Add notebook example to use sqlite-vss as a vector store. (#10292)
philippe2803 Sep 6, 2023
7583ad1
Update rwkv.py import error (#10293)
ParamdeepSinghShorthillsAI Sep 6, 2023
ae2c11c
Add LCEL cookbook examples (#10290)
hinthornw Sep 6, 2023
0ee5600
Doc: openai_functions_agent.mdx import (#10282)
broven Sep 6, 2023
30bb125
Add strip text splits flag (#10295)
IlyaMichlin Sep 6, 2023
a6cc437
Added Hugging face inference api (#10280)
J4e6eR Sep 6, 2023
f081b27
Updated Additional Resources section of documentation (#10260)
captivus Sep 6, 2023
e220fa9
Don't hardcode PGVector distance strategies (#10265)
brianantonelli Sep 6, 2023
77a7315
Update amazon_comprehend_chain.ipynb (#10246)
eltociear Sep 6, 2023
0fe63e4
Add use case nb position (#10299)
baskaryan Sep 6, 2023
a0818d2
Split sql use case docs (#10257)
baskaryan Sep 6, 2023
11240a3
Fix SQL search_path for Trino query engine (#10248)
cccs-eric Sep 6, 2023
ea7249b
Implement NucliaDB vector store (#10236)
ebrehault Sep 6, 2023
440d61e
Update NucliaDB vecstore deps
baskaryan Sep 6, 2023
9baa5e2
Resolve: VectorSearch enabled SQLChain? (#10177)
mpskex Sep 7, 2023
4bd0a26
Move Myscale SQL vector retrieval nb
baskaryan Sep 7, 2023
1dcdf9e
Data deanonymization (#10093)
maks-operlejn-ds Sep 7, 2023
7357d2f
deleting result.json
rsharath Sep 8, 2023
916de7e
Merge remote-tracking branch 'origin/master' into javelin
rsharath Sep 8, 2023
45c0662
adding notebook for javelin
rsharath Sep 8, 2023
812ab1c
merging in changes
rsharath Sep 17, 2023
b9bc070
missed an edit, fixed it
rsharath Sep 17, 2023
620db8e
Merge remote-tracking branch 'origin/master' into javelin
rsharath Sep 19, 2023
e516a00
correct import for embeddings
rsharath Sep 19, 2023
dd5af3d
added some exists checks, while integrating latest from main
rsharath Sep 19, 2023
8b853ce
fixing <<<HEAD, stray deletion, inadvertent file change, deleted file…
rsharath Sep 19, 2023
2df1b9c
Merge remote-tracking branch 'origin/master' into javelin
rsharath Sep 20, 2023
c5cd9f3
Remove unused files
rsharath Sep 20, 2023
8e6a747
Merge remote-tracking branch 'origin/master' into javelin
rsharath Sep 20, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions docs/api_reference/guide_imports.json
Original file line number Diff line number Diff line change
Expand Up @@ -465,6 +465,7 @@
"PromptLayer": "https://python.langchain.com/docs/integrations/callbacks/promptlayer",
"Log10": "https://python.langchain.com/docs/integrations/providers/log10",
"MLflow AI Gateway": "https://python.langchain.com/docs/integrations/providers/mlflow_ai_gateway",
"Javelin AI Gateway": "https://python.langchain.com/docs/integrations/providers/javelin_ai_gateway",
"Flyte": "https://python.langchain.com/docs/integrations/providers/flyte",
"Arthur": "https://python.langchain.com/docs/integrations/providers/arthur_tracking",
"Chatbots": "https://python.langchain.com/docs/use_cases/chatbots",
Expand Down Expand Up @@ -1245,6 +1246,7 @@
"Context": "https://python.langchain.com/docs/integrations/callbacks/context",
"Label Studio": "https://python.langchain.com/docs/integrations/callbacks/labelstudio",
"MLflow AI Gateway": "https://python.langchain.com/docs/integrations/providers/mlflow_ai_gateway",
"Javelin AI Gateway": "https://python.langchain.com/docs/integrations/providers/javelin_ai_gateway",
"Chatbots": "https://python.langchain.com/docs/use_cases/chatbots",
"Conversational Retrieval Agent": "https://python.langchain.com/docs/use_cases/question_answering/how_to/conversational_retrieval_agents",
"Structure answers with OpenAI functions": "https://python.langchain.com/docs/use_cases/question_answering/integrations/openai_functions_retrieval_qa",
Expand Down Expand Up @@ -1879,6 +1881,15 @@
"ChatMLflowAIGateway": {
"MLflow AI Gateway": "https://python.langchain.com/docs/integrations/providers/mlflow_ai_gateway"
},
"JavelinAIGateway": {
"Javelin AI Gateway": "https://python.langchain.com/docs/integrations/providers/javelin_ai_gateway"
},
"JavelinAIGatewayEmbeddings": {
"Javelin AI Gateway": "https://python.langchain.com/docs/integrations/providers/javelin_ai_gateway"
},
"ChatJavelinAIGateway": {
"Javelin AI Gateway": "https://python.langchain.com/docs/integrations/providers/javelin_ai_gateway"
},
"SingleStoreDB": {
"SingleStoreDB": "https://python.langchain.com/docs/integrations/vectorstores/singlestoredb"
},
Expand Down
242 changes: 242 additions & 0 deletions docs/extras/integrations/llms/javelin.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,242 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "62bacc68-1976-44eb-9316-d5baf54bf595",
"metadata": {},
"source": [
"# Javelin AI Gateway Tutorial\n",
"\n",
"This Jupyter Notebook will explore how to interact with the Javelin AI Gateway using the Python SDK. \n",
"The Javelin AI Gateway facilitates the utilization of large language models (LLMs) like OpenAI, Cohere, Anthropic, and others by \n",
"providing a secure and unified endpoint. The gateway itself provides a centralized mechanism to roll out models systematically, \n",
"provide access security, policy & cost guardrails for enterprises, etc., \n",
"\n",
"For a complete listing of all the features & benefits of Javelin, please visit www.getjavelin.io\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "e52185f8-132b-4585-b73d-6fee928ac199",
"metadata": {},
"source": [
"## Step 1: Introduction\n",
"[The Javelin AI Gateway](https://www.getjavelin.io) is an enterprise-grade API Gateway for AI applications. It integrates robust access security, ensuring secure interactions with large language models. Learn more in the [official documentation](https://docs.getjavelin.io).\n"
]
},
{
"cell_type": "markdown",
"id": "2e2acdb3-e3b8-422b-b077-7a0d63d18349",
"metadata": {},
"source": [
"## Step 2: Installation\n",
"Before we begin, we must install the `javelin_sdk` and set up the Javelin API key as an environment variable. "
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "e91518a4-43ce-443e-b4c0-dbc652eb749f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: javelin_sdk in /usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages (0.1.8)\n",
"Requirement already satisfied: httpx<0.25.0,>=0.24.0 in /usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages (from javelin_sdk) (0.24.1)\n",
"Requirement already satisfied: pydantic<2.0.0,>=1.10.7 in /usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages (from javelin_sdk) (1.10.12)\n",
"Requirement already satisfied: certifi in /usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages (from httpx<0.25.0,>=0.24.0->javelin_sdk) (2023.5.7)\n",
"Requirement already satisfied: httpcore<0.18.0,>=0.15.0 in /usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages (from httpx<0.25.0,>=0.24.0->javelin_sdk) (0.17.3)\n",
"Requirement already satisfied: idna in /usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages (from httpx<0.25.0,>=0.24.0->javelin_sdk) (3.4)\n",
"Requirement already satisfied: sniffio in /usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages (from httpx<0.25.0,>=0.24.0->javelin_sdk) (1.3.0)\n",
"Requirement already satisfied: typing-extensions>=4.2.0 in /usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages (from pydantic<2.0.0,>=1.10.7->javelin_sdk) (4.7.1)\n",
"Requirement already satisfied: h11<0.15,>=0.13 in /usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages (from httpcore<0.18.0,>=0.15.0->httpx<0.25.0,>=0.24.0->javelin_sdk) (0.14.0)\n",
"Requirement already satisfied: anyio<5.0,>=3.0 in /usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages (from httpcore<0.18.0,>=0.15.0->httpx<0.25.0,>=0.24.0->javelin_sdk) (3.7.1)\n",
"Note: you may need to restart the kernel to use updated packages.\n"
]
}
],
"source": [
"pip install 'javelin_sdk'"
]
},
{
"cell_type": "markdown",
"id": "53b546dc-9ca3-4602-9a7b-d733d99e8e2f",
"metadata": {},
"source": [
"## Step 3: Completions Example\n",
"This section will demonstrate how to interact with the Javelin AI Gateway to get completions from a large language model. Here is a Python script that demonstrates this:\n",
"(note) assumes that you have setup a route in the gateway called 'eng_dept03'"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "d36949f0-5354-44ca-9a31-70c769344319",
"metadata": {},
"outputs": [
{
"ename": "ImportError",
"evalue": "cannot import name 'JavelinAIGateway' from 'langchain.llms' (/usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages/langchain/llms/__init__.py)",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[6], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mlangchain\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mchains\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m LLMChain\n\u001b[0;32m----> 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mlangchain\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mllms\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m JavelinAIGateway\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mlangchain\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mprompts\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m PromptTemplate\n\u001b[1;32m 5\u001b[0m route_completions \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124meng_dept03\u001b[39m\u001b[38;5;124m\"\u001b[39m\n",
"\u001b[0;31mImportError\u001b[0m: cannot import name 'JavelinAIGateway' from 'langchain.llms' (/usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages/langchain/llms/__init__.py)"
]
}
],
"source": [
"from langchain.chains import LLMChain\n",
"from langchain.llms import JavelinAIGateway\n",
"from langchain.prompts import PromptTemplate\n",
"\n",
"route_completions = \"eng_dept03\"\n",
"\n",
"gateway = JavelinAIGateway(\n",
" gateway_uri=\"http://localhost:8000\", # replace with service URL or host/port of Javelin\n",
" route=route_completions,\n",
" model_name=\"text-davinci-003\",\n",
")\n",
"\n",
"prompt = PromptTemplate(\"Translate the following English text to French: {text}\")\n",
"\n",
"llmchain = LLMChain(llm=gateway, prompt=prompt)\n",
"result = llmchain.run(\"podcast player\")\n",
"\n",
"print(result)\n"
]
},
{
"cell_type": "markdown",
"id": "6b63fe93-2e77-4ea9-b8e7-dec2b96b8e95",
"metadata": {},
"source": [
"# Step 4: Embeddings Example\n",
"This section demonstrates how to use the Javelin AI Gateway to obtain embeddings for text queries and documents. Here is a Python script that illustrates this:\n",
"(note) assumes that you have setup a route in the gateway called 'embeddings'"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "878e6c1d-be7f-49de-825c-43c266c8714e",
"metadata": {},
"outputs": [
{
"ename": "ImportError",
"evalue": "cannot import name 'JavelinAIGatewayEmbeddings' from 'langchain.embeddings' (/usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages/langchain/embeddings/__init__.py)",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[9], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mlangchain\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01membeddings\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m JavelinAIGatewayEmbeddings\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mlangchain\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01membeddings\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mopenai\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m OpenAIEmbeddings\n\u001b[1;32m 4\u001b[0m embeddings \u001b[38;5;241m=\u001b[39m JavelinAIGatewayEmbeddings(\n\u001b[1;32m 5\u001b[0m gateway_uri\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhttp://localhost:8000\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;66;03m# replace with service URL or host/port of Javelin\u001b[39;00m\n\u001b[1;32m 6\u001b[0m route\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124membeddings\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 7\u001b[0m )\n",
"\u001b[0;31mImportError\u001b[0m: cannot import name 'JavelinAIGatewayEmbeddings' from 'langchain.embeddings' (/usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages/langchain/embeddings/__init__.py)"
]
}
],
"source": [
"from langchain.embeddings import JavelinAIGatewayEmbeddings\n",
"from langchain.embeddings.openai import OpenAIEmbeddings\n",
"\n",
"embeddings = JavelinAIGatewayEmbeddings(\n",
" gateway_uri=\"http://localhost:8000\", # replace with service URL or host/port of Javelin\n",
" route=\"embeddings\",\n",
")\n",
"\n",
"print(embeddings.embed_query(\"hello\"))\n",
"print(embeddings.embed_documents([\"hello\"]))\n"
]
},
{
"cell_type": "markdown",
"id": "07c6691b-d333-4598-b2b7-c0933ed75937",
"metadata": {},
"source": [
"# Step 5: Chat Example\n",
"This section illustrates how to interact with the Javelin AI Gateway to facilitate a chat with a large language model. Here is a Python script that demonstrates this:\n",
"(note) assumes that you have setup a route in the gateway called 'mychatbot_route'"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "653ef88c-36cd-4730-9c12-43c246b551f1",
"metadata": {},
"outputs": [
{
"ename": "ImportError",
"evalue": "cannot import name 'ChatJavelinAIGateway' from 'langchain.chat_models' (/usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages/langchain/chat_models/__init__.py)",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[8], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mlangchain\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mchat_models\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m ChatJavelinAIGateway\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mlangchain\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mschema\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m HumanMessage, SystemMessage\n\u001b[1;32m 4\u001b[0m messages \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 5\u001b[0m SystemMessage(\n\u001b[1;32m 6\u001b[0m content\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mYou are a helpful assistant that translates English to French.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 10\u001b[0m ),\n\u001b[1;32m 11\u001b[0m ]\n",
"\u001b[0;31mImportError\u001b[0m: cannot import name 'ChatJavelinAIGateway' from 'langchain.chat_models' (/usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages/langchain/chat_models/__init__.py)"
]
}
],
"source": [
"from langchain.chat_models import ChatJavelinAIGateway\n",
"from langchain.schema import HumanMessage, SystemMessage\n",
"\n",
"messages = [\n",
" SystemMessage(\n",
" content=\"You are a helpful assistant that translates English to French.\"\n",
" ),\n",
" HumanMessage(\n",
" content=\"Artificial Intelligence has the power to transform humanity and make the world a better place\"\n",
" ),\n",
"]\n",
"\n",
"chat = ChatJavelinAIGateway(\n",
" gateway_uri=\"http://localhost:8000\", # replace with service URL or host/port of Javelin\n",
" route=\"mychatbot_route\",\n",
" model_name=\"gpt-3.5-turbo\",\n",
" params={\n",
" \"temperature\": 0.1\n",
" }\n",
")\n",
"\n",
"print(chat(messages))\n"
]
},
{
"cell_type": "markdown",
"id": "6eb9cf33-6505-4e05-808b-645856463a8e",
"metadata": {},
"source": [
"Step 6: Conclusion\n",
"This tutorial introduced the Javelin AI Gateway and demonstrated how to interact with it using the Python SDK. \n",
"Remember to check the Javelin [Python SDK](https://www.github.com/getjavelin.io/javelin-python) for more examples and to explore the official documentation for additional details.\n",
"\n",
"Happy coding!"
]
}
],
"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.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
92 changes: 92 additions & 0 deletions docs/extras/integrations/providers/javelin_ai_gateway.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Javelin AI Gateway

[The Javelin AI Gateway](https://www.getjavelin.io) service is a high-performance, enterprise grade API Gateway for AI applications.
It is designed to streamline the usage and access of various large language model (LLM) providers,
such as OpenAI, Cohere, Anthropic and custom large language models within an organization by incorporating
robust access security for all interactions with LLMs.

Javelin offers a high-level interface that simplifies the interaction with LLMs by providing a unified endpoint
to handle specific LLM related requests.

See the Javelin AI Gateway [documentation](https://docs.getjavelin.io) for more details.
[Javelin Python SDK](https://www.github.com/getjavelin/javelin-python) is an easy to use client library meant to be embedded into AI Applications

## Installation and Setup

Install `javelin_sdk` to interact with Javelin AI Gateway:

```sh
pip install 'javelin_sdk'
```

Set the Javelin's API key as an environment variable:

```sh
export JAVELIN_API_KEY=...
```

## Completions Example

```python

from langchain.chains import LLMChain
from langchain.llms import JavelinAIGateway
from langchain.prompts import PromptTemplate

route_completions = "eng_dept03"

gateway = JavelinAIGateway(
gateway_uri="http://localhost:8000",
route=route_completions,
model_name="text-davinci-003",
)

llmchain = LLMChain(llm=gateway, prompt=prompt)
result = llmchain.run("podcast player")

print(result)

```

## Embeddings Example

```python
from langchain.embeddings import JavelinAIGatewayEmbeddings
from langchain.embeddings.openai import OpenAIEmbeddings

embeddings = JavelinAIGatewayEmbeddings(
gateway_uri="http://localhost:8000",
route="embeddings",
)

print(embeddings.embed_query("hello"))
print(embeddings.embed_documents(["hello"]))
```

## Chat Example
```python
from langchain.chat_models import ChatJavelinAIGateway
from langchain.schema import HumanMessage, SystemMessage

messages = [
SystemMessage(
content="You are a helpful assistant that translates English to French."
),
HumanMessage(
content="Artificial Intelligence has the power to transform humanity and make the world a better place"
),
]

chat = ChatJavelinAIGateway(
gateway_uri="http://localhost:8000",
route="mychatbot_route",
model_name="gpt-3.5-turbo"
params={
"temperature": 0.1
}
)

print(chat(messages))

```

2 changes: 2 additions & 0 deletions libs/langchain/langchain/chat_models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
from langchain.chat_models.fake import FakeListChatModel
from langchain.chat_models.google_palm import ChatGooglePalm
from langchain.chat_models.human import HumanInputChatModel
from langchain.chat_models.javelin_ai_gateway import ChatJavelinAIGateway
from langchain.chat_models.jinachat import JinaChat
from langchain.chat_models.konko import ChatKonko
from langchain.chat_models.litellm import ChatLiteLLM
Expand Down Expand Up @@ -53,6 +54,7 @@
"ChatAnyscale",
"ChatLiteLLM",
"ErnieBotChat",
"ChatJavelinAIGateway",
"ChatKonko",
"QianfanChatEndpoint",
]
Loading