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

Migrate mlflow and databricks classes to deployments APIs. #13699

Merged
merged 35 commits into from
Nov 30, 2023

Conversation

harupy
Copy link
Contributor

@harupy harupy commented Nov 22, 2023

Description

Related to mlflow/mlflow#10420. MLflow AI gateway will be deprecated and replaced by the mlflow.deployments module. Happy to split this PR if it's too large.

pip install git+https://github.com/langchain-ai/langchain.git@refs/pull/13699/merge#subdirectory=libs/langchain

Dependencies

Install mlflow from mlflow/mlflow#10420:

pip install git+https://github.com/mlflow/mlflow.git@refs/pull/10420/merge

Testing plan

The following code works fine on local and databricks:

Click

"""
Setup
-----
mlflow deployments start-server --config-path examples/gateway/openai/config.yaml
databricks secrets create-scope <scope>
databricks secrets put-secret <scope> openai-api-key --string-value $OPENAI_API_KEY

Run
---
python /path/to/this/file.py secrets/<scope>/openai-api-key
"""
from langchain.chat_models import ChatMlflow, ChatDatabricks
from langchain.embeddings import MlflowEmbeddings, DatabricksEmbeddings
from langchain.llms import Databricks, Mlflow
from langchain.schema.messages import HumanMessage
from langchain.chains.loading import load_chain
from mlflow.deployments import get_deploy_client
import uuid
import sys
import tempfile
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

###############################
# MLflow
###############################
chat = ChatMlflow(
    target_uri="http://127.0.0.1:5000", endpoint="chat", params={"temperature": 0.1}
)
print(chat([HumanMessage(content="hello")]))

embeddings = MlflowEmbeddings(target_uri="http://127.0.0.1:5000", endpoint="embeddings")
print(embeddings.embed_query("hello")[:3])
print(embeddings.embed_documents(["hello", "world"])[0][:3])

llm = Mlflow(
    target_uri="http://127.0.0.1:5000",
    endpoint="completions",
    params={"temperature": 0.1},
)
print(llm("I am"))

llm_chain = LLMChain(
    llm=llm,
    prompt=PromptTemplate(
        input_variables=["adjective"],
        template="Tell me a {adjective} joke",
    ),
)
print(llm_chain.run(adjective="funny"))

# serialization/deserialization
with tempfile.TemporaryDirectory() as tmpdir:
    print(tmpdir)
    path = f"{tmpdir}/llm.yaml"
    llm_chain.save(path)
    loaded_chain = load_chain(path)
    print(loaded_chain("funny"))

###############################
# Databricks
###############################
secret = sys.argv[1]
client = get_deploy_client("databricks")

# External - chat
name = f"chat-{uuid.uuid4()}"
client.create_endpoint(
    name=name,
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "gpt-4",
                    "provider": "openai",
                    "task": "llm/v1/chat",
                    "openai_config": {
                        "openai_api_key": "{{" + secret + "}}",
                    },
                },
            }
        ],
    },
)
try:
    chat = ChatDatabricks(
        target_uri="databricks", endpoint=name, params={"temperature": 0.1}
    )
    print(chat([HumanMessage(content="hello")]))
finally:
    client.delete_endpoint(endpoint=name)

# External - embeddings
name = f"embeddings-{uuid.uuid4()}"
client.create_endpoint(
    name=name,
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "text-embedding-ada-002",
                    "provider": "openai",
                    "task": "llm/v1/embeddings",
                    "openai_config": {
                        "openai_api_key": "{{" + secret + "}}",
                    },
                },
            }
        ],
    },
)
try:
    embeddings = DatabricksEmbeddings(target_uri="databricks", endpoint=name)
    print(embeddings.embed_query("hello")[:3])
    print(embeddings.embed_documents(["hello", "world"])[0][:3])
finally:
    client.delete_endpoint(endpoint=name)

# External - completions
name = f"completions-{uuid.uuid4()}"
client.create_endpoint(
    name=name,
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "gpt-3.5-turbo-instruct",
                    "provider": "openai",
                    "task": "llm/v1/completions",
                    "openai_config": {
                        "openai_api_key": "{{" + secret + "}}",
                    },
                },
            }
        ],
    },
)
try:
    llm = Databricks(
        endpoint_name=name,
        model_kwargs={"temperature": 0.1},
    )
    print(llm("I am"))
finally:
    client.delete_endpoint(endpoint=name)


# Foundation model - chat
chat = ChatDatabricks(
    endpoint="databricks-llama-2-70b-chat", params={"temperature": 0.1}
)
print(chat([HumanMessage(content="hello")]))

# Foundation model - embeddings
embeddings = DatabricksEmbeddings(endpoint="databricks-bge-large-en")
print(embeddings.embed_query("hello")[:3])

# Foundation model - completions
llm = Databricks(
    endpoint_name="databricks-mpt-7b-instruct", model_kwargs={"temperature": 0.1}
)
print(llm("hello"))
llm_chain = LLMChain(
    llm=llm,
    prompt=PromptTemplate(
        input_variables=["adjective"],
        template="Tell me a {adjective} joke",
    ),
)
print(llm_chain.run(adjective="funny"))

# serialization/deserialization
with tempfile.TemporaryDirectory() as tmpdir:
    print(tmpdir)
    path = f"{tmpdir}/llm.yaml"
    llm_chain.save(path)
    loaded_chain = load_chain(path)
    print(loaded_chain("funny"))

Output:

content='Hello! How can I assist you today?'
[-0.025058426, -0.01938856, -0.027781019]
[-0.025058426, -0.01938856, -0.027781019]
sorry, but I cannot continue the sentence as it is incomplete. Can you please provide more information or context?
Sure, here's a classic one for you:

Why don't scientists trust atoms?

Because they make up everything!
/var/folders/dz/cd_nvlf14g9g__n3ph0d_0pm0000gp/T/tmpx_4no6ad
{'adjective': 'funny', 'text': "Sure, here's a classic one for you:\n\nWhy don't scientists trust atoms?\n\nBecause they make up everything!"}
content='Hello! How can I assist you today?'
[-0.025058426, -0.01938856, -0.027781019]
[-0.025058426, -0.01938856, -0.027781019]
 a 23 year old female and I am currently studying for my master's degree
content="\nHello! It's nice to meet you. Is there something I can help you with or would you like to chat for a bit?"
[0.051055908203125, 0.007221221923828125, 0.003879547119140625]
[0.051055908203125, 0.007221221923828125, 0.003879547119140625]

hello back
 Well, I don't really know many jokes, but I do know this funny story...
/var/folders/dz/cd_nvlf14g9g__n3ph0d_0pm0000gp/T/tmp7_ds72ex
{'adjective': 'funny', 'text': " Well, I don't really know many jokes, but I do know this funny story..."}

The existing workflow doesn't break:

click

import uuid

import mlflow
from mlflow.models import ModelSignature
from mlflow.types.schema import ColSpec, Schema


class MyModel(mlflow.pyfunc.PythonModel):
    def predict(self, context, model_input):
        return str(uuid.uuid4())


with mlflow.start_run():
    mlflow.pyfunc.log_model(
        "model",
        python_model=MyModel(),
        pip_requirements=["mlflow==2.8.1", "cloudpickle<3"],
        signature=ModelSignature(
            inputs=Schema(
                [
                    ColSpec("string", "prompt"),
                    ColSpec("string", "stop"),
                ]
            ),
            outputs=Schema(
                [
                    ColSpec(name=None, type="string"),
                ]
            ),
        ),
        registered_model_name=f"lang-{uuid.uuid4()}",
    )

# Manually create a serving endpoint with the registered model and run
from langchain.llms import Databricks

llm = Databricks(endpoint_name="<name>")
llm("hello")  # 9d0b2491-3d13-487c-bc02-1287f06ecae7

Follow-up tasks

(This PR is too large. I'll file a separate one for follow-up tasks.)

  • Update docs/docs/integrations/providers/mlflow_ai_gateway.mdx and docs/docs/integrations/providers/databricks.md.

Copy link

vercel bot commented Nov 22, 2023

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
langchain ✅ Ready (Inspect) Visit Preview 💬 Add feedback Nov 30, 2023 4:15am

@harupy harupy marked this pull request as ready for review November 27, 2023 10:19
@dosubot dosubot bot added size:XL This PR changes 500-999 lines, ignoring generated files. Ɑ: models Related to LLMs or chat model modules 🤖:refactor A large refactor of a feature(s) or restructuring of many files labels Nov 27, 2023
Copy link
Contributor

@dbczumar dbczumar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@harupy
Copy link
Contributor Author

harupy commented Nov 28, 2023

@harupy
Copy link
Contributor Author

harupy commented Nov 28, 2023

@baskaryan Would you mind reviewing this PR?

Copy link
Contributor

@freemso freemso left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look good. Left some comments. The biggest concern is to test out if the added chat_models and llms support LangChain's serialization. mlflow.langchain relies on LangChain's serialization to save/load the chain.

libs/langchain/langchain/embeddings/databricks.py Outdated Show resolved Hide resolved
libs/langchain/langchain/llms/mlflow.py Show resolved Hide resolved
libs/langchain/langchain/chat_models/databricks.py Outdated Show resolved Hide resolved
Copy link
Contributor

@dbczumar dbczumar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@harupy LGTM once we:

  • Support databricks and databricks://scope:profile as target URIs in the MLflow integrations
  • Support params in langchain.llms.Databricks

raise ValueError(
"Invalid target URI. The target URI must be a valid HTTP/HTTPS URI."
f"Invalid target URI: {self.target_uri}. "
"The scheme must be one of {allowed}."
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

f-string

@harupy
Copy link
Contributor Author

harupy commented Nov 30, 2023

@baskaryan Could you take another look?

Copy link
Contributor

@dbczumar dbczumar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Thanks @harupy !


# Ignoring type because below is valid pydantic code
# Unexpected keyword argument "extra" for "__init_subclass__" of "object" [call-arg]
class ChatParams(BaseModel, extra=Extra.allow): # type: ignore[call-arg]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

out of curiosity, why not put known params directly on ChatMlflow? seems like a slightly nicer ux

Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
@dosubot dosubot bot added the lgtm PR looks good. Use to confirm that a PR is ready for merging. label Nov 30, 2023
@baskaryan baskaryan merged commit 0d08a69 into langchain-ai:master Nov 30, 2023
39 checks passed
laudanum123 pushed a commit to laudanum123/langchain that referenced this pull request Dec 3, 2023
…s APIs. (langchain-ai#13699)

## Description

Related to mlflow/mlflow#10420. MLflow AI
gateway will be deprecated and replaced by the `mlflow.deployments`
module. Happy to split this PR if it's too large.

```
pip install git+https://github.com/langchain-ai/langchain.git@refs/pull/13699/merge#subdirectory=libs/langchain
```

## Dependencies

Install mlflow from mlflow/mlflow#10420:

```
pip install git+https://github.com/mlflow/mlflow.git@refs/pull/10420/merge
```

## Testing plan

The following code works fine on local and databricks:

<details><summary>Click</summary>
<p>

```python
"""
Setup
-----
mlflow deployments start-server --config-path examples/gateway/openai/config.yaml
databricks secrets create-scope <scope>
databricks secrets put-secret <scope> openai-api-key --string-value $OPENAI_API_KEY

Run
---
python /path/to/this/file.py secrets/<scope>/openai-api-key
"""
from langchain.chat_models import ChatMlflow, ChatDatabricks
from langchain.embeddings import MlflowEmbeddings, DatabricksEmbeddings
from langchain.llms import Databricks, Mlflow
from langchain.schema.messages import HumanMessage
from langchain.chains.loading import load_chain
from mlflow.deployments import get_deploy_client
import uuid
import sys
import tempfile
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

###############################
# MLflow
###############################
chat = ChatMlflow(
    target_uri="http://127.0.0.1:5000", endpoint="chat", params={"temperature": 0.1}
)
print(chat([HumanMessage(content="hello")]))

embeddings = MlflowEmbeddings(target_uri="http://127.0.0.1:5000", endpoint="embeddings")
print(embeddings.embed_query("hello")[:3])
print(embeddings.embed_documents(["hello", "world"])[0][:3])

llm = Mlflow(
    target_uri="http://127.0.0.1:5000",
    endpoint="completions",
    params={"temperature": 0.1},
)
print(llm("I am"))

llm_chain = LLMChain(
    llm=llm,
    prompt=PromptTemplate(
        input_variables=["adjective"],
        template="Tell me a {adjective} joke",
    ),
)
print(llm_chain.run(adjective="funny"))

# serialization/deserialization
with tempfile.TemporaryDirectory() as tmpdir:
    print(tmpdir)
    path = f"{tmpdir}/llm.yaml"
    llm_chain.save(path)
    loaded_chain = load_chain(path)
    print(loaded_chain("funny"))

###############################
# Databricks
###############################
secret = sys.argv[1]
client = get_deploy_client("databricks")

# External - chat
name = f"chat-{uuid.uuid4()}"
client.create_endpoint(
    name=name,
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "gpt-4",
                    "provider": "openai",
                    "task": "llm/v1/chat",
                    "openai_config": {
                        "openai_api_key": "{{" + secret + "}}",
                    },
                },
            }
        ],
    },
)
try:
    chat = ChatDatabricks(
        target_uri="databricks", endpoint=name, params={"temperature": 0.1}
    )
    print(chat([HumanMessage(content="hello")]))
finally:
    client.delete_endpoint(endpoint=name)

# External - embeddings
name = f"embeddings-{uuid.uuid4()}"
client.create_endpoint(
    name=name,
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "text-embedding-ada-002",
                    "provider": "openai",
                    "task": "llm/v1/embeddings",
                    "openai_config": {
                        "openai_api_key": "{{" + secret + "}}",
                    },
                },
            }
        ],
    },
)
try:
    embeddings = DatabricksEmbeddings(target_uri="databricks", endpoint=name)
    print(embeddings.embed_query("hello")[:3])
    print(embeddings.embed_documents(["hello", "world"])[0][:3])
finally:
    client.delete_endpoint(endpoint=name)

# External - completions
name = f"completions-{uuid.uuid4()}"
client.create_endpoint(
    name=name,
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "gpt-3.5-turbo-instruct",
                    "provider": "openai",
                    "task": "llm/v1/completions",
                    "openai_config": {
                        "openai_api_key": "{{" + secret + "}}",
                    },
                },
            }
        ],
    },
)
try:
    llm = Databricks(
        endpoint_name=name,
        model_kwargs={"temperature": 0.1},
    )
    print(llm("I am"))
finally:
    client.delete_endpoint(endpoint=name)


# Foundation model - chat
chat = ChatDatabricks(
    endpoint="databricks-llama-2-70b-chat", params={"temperature": 0.1}
)
print(chat([HumanMessage(content="hello")]))

# Foundation model - embeddings
embeddings = DatabricksEmbeddings(endpoint="databricks-bge-large-en")
print(embeddings.embed_query("hello")[:3])

# Foundation model - completions
llm = Databricks(
    endpoint_name="databricks-mpt-7b-instruct", model_kwargs={"temperature": 0.1}
)
print(llm("hello"))
llm_chain = LLMChain(
    llm=llm,
    prompt=PromptTemplate(
        input_variables=["adjective"],
        template="Tell me a {adjective} joke",
    ),
)
print(llm_chain.run(adjective="funny"))

# serialization/deserialization
with tempfile.TemporaryDirectory() as tmpdir:
    print(tmpdir)
    path = f"{tmpdir}/llm.yaml"
    llm_chain.save(path)
    loaded_chain = load_chain(path)
    print(loaded_chain("funny"))

```

Output:

```
content='Hello! How can I assist you today?'
[-0.025058426, -0.01938856, -0.027781019]
[-0.025058426, -0.01938856, -0.027781019]
sorry, but I cannot continue the sentence as it is incomplete. Can you please provide more information or context?
Sure, here's a classic one for you:

Why don't scientists trust atoms?

Because they make up everything!
/var/folders/dz/cd_nvlf14g9g__n3ph0d_0pm0000gp/T/tmpx_4no6ad
{'adjective': 'funny', 'text': "Sure, here's a classic one for you:\n\nWhy don't scientists trust atoms?\n\nBecause they make up everything!"}
content='Hello! How can I assist you today?'
[-0.025058426, -0.01938856, -0.027781019]
[-0.025058426, -0.01938856, -0.027781019]
 a 23 year old female and I am currently studying for my master's degree
content="\nHello! It's nice to meet you. Is there something I can help you with or would you like to chat for a bit?"
[0.051055908203125, 0.007221221923828125, 0.003879547119140625]
[0.051055908203125, 0.007221221923828125, 0.003879547119140625]

hello back
 Well, I don't really know many jokes, but I do know this funny story...
/var/folders/dz/cd_nvlf14g9g__n3ph0d_0pm0000gp/T/tmp7_ds72ex
{'adjective': 'funny', 'text': " Well, I don't really know many jokes, but I do know this funny story..."}
```

</p>
</details>

The existing workflow doesn't break:

<details><summary>click</summary>
<p>

```python
import uuid

import mlflow
from mlflow.models import ModelSignature
from mlflow.types.schema import ColSpec, Schema


class MyModel(mlflow.pyfunc.PythonModel):
    def predict(self, context, model_input):
        return str(uuid.uuid4())


with mlflow.start_run():
    mlflow.pyfunc.log_model(
        "model",
        python_model=MyModel(),
        pip_requirements=["mlflow==2.8.1", "cloudpickle<3"],
        signature=ModelSignature(
            inputs=Schema(
                [
                    ColSpec("string", "prompt"),
                    ColSpec("string", "stop"),
                ]
            ),
            outputs=Schema(
                [
                    ColSpec(name=None, type="string"),
                ]
            ),
        ),
        registered_model_name=f"lang-{uuid.uuid4()}",
    )

# Manually create a serving endpoint with the registered model and run
from langchain.llms import Databricks

llm = Databricks(endpoint_name="<name>")
llm("hello")  # 9d0b2491-3d13-487c-bc02-1287f06ecae7
```

</p>
</details> 

## Follow-up tasks

(This PR is too large. I'll file a separate one for follow-up tasks.)

- Update `docs/docs/integrations/providers/mlflow_ai_gateway.mdx` and
`docs/docs/integrations/providers/databricks.md`.

---------

Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
Co-authored-by: Bagatur <baskaryan@gmail.com>
vladkol pushed a commit to vladkol/langchain that referenced this pull request Dec 3, 2023
…s APIs. (langchain-ai#13699)

## Description

Related to mlflow/mlflow#10420. MLflow AI
gateway will be deprecated and replaced by the `mlflow.deployments`
module. Happy to split this PR if it's too large.

```
pip install git+https://github.com/langchain-ai/langchain.git@refs/pull/13699/merge#subdirectory=libs/langchain
```

## Dependencies

Install mlflow from mlflow/mlflow#10420:

```
pip install git+https://github.com/mlflow/mlflow.git@refs/pull/10420/merge
```

## Testing plan

The following code works fine on local and databricks:

<details><summary>Click</summary>
<p>

```python
"""
Setup
-----
mlflow deployments start-server --config-path examples/gateway/openai/config.yaml
databricks secrets create-scope <scope>
databricks secrets put-secret <scope> openai-api-key --string-value $OPENAI_API_KEY

Run
---
python /path/to/this/file.py secrets/<scope>/openai-api-key
"""
from langchain.chat_models import ChatMlflow, ChatDatabricks
from langchain.embeddings import MlflowEmbeddings, DatabricksEmbeddings
from langchain.llms import Databricks, Mlflow
from langchain.schema.messages import HumanMessage
from langchain.chains.loading import load_chain
from mlflow.deployments import get_deploy_client
import uuid
import sys
import tempfile
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

###############################
# MLflow
###############################
chat = ChatMlflow(
    target_uri="http://127.0.0.1:5000", endpoint="chat", params={"temperature": 0.1}
)
print(chat([HumanMessage(content="hello")]))

embeddings = MlflowEmbeddings(target_uri="http://127.0.0.1:5000", endpoint="embeddings")
print(embeddings.embed_query("hello")[:3])
print(embeddings.embed_documents(["hello", "world"])[0][:3])

llm = Mlflow(
    target_uri="http://127.0.0.1:5000",
    endpoint="completions",
    params={"temperature": 0.1},
)
print(llm("I am"))

llm_chain = LLMChain(
    llm=llm,
    prompt=PromptTemplate(
        input_variables=["adjective"],
        template="Tell me a {adjective} joke",
    ),
)
print(llm_chain.run(adjective="funny"))

# serialization/deserialization
with tempfile.TemporaryDirectory() as tmpdir:
    print(tmpdir)
    path = f"{tmpdir}/llm.yaml"
    llm_chain.save(path)
    loaded_chain = load_chain(path)
    print(loaded_chain("funny"))

###############################
# Databricks
###############################
secret = sys.argv[1]
client = get_deploy_client("databricks")

# External - chat
name = f"chat-{uuid.uuid4()}"
client.create_endpoint(
    name=name,
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "gpt-4",
                    "provider": "openai",
                    "task": "llm/v1/chat",
                    "openai_config": {
                        "openai_api_key": "{{" + secret + "}}",
                    },
                },
            }
        ],
    },
)
try:
    chat = ChatDatabricks(
        target_uri="databricks", endpoint=name, params={"temperature": 0.1}
    )
    print(chat([HumanMessage(content="hello")]))
finally:
    client.delete_endpoint(endpoint=name)

# External - embeddings
name = f"embeddings-{uuid.uuid4()}"
client.create_endpoint(
    name=name,
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "text-embedding-ada-002",
                    "provider": "openai",
                    "task": "llm/v1/embeddings",
                    "openai_config": {
                        "openai_api_key": "{{" + secret + "}}",
                    },
                },
            }
        ],
    },
)
try:
    embeddings = DatabricksEmbeddings(target_uri="databricks", endpoint=name)
    print(embeddings.embed_query("hello")[:3])
    print(embeddings.embed_documents(["hello", "world"])[0][:3])
finally:
    client.delete_endpoint(endpoint=name)

# External - completions
name = f"completions-{uuid.uuid4()}"
client.create_endpoint(
    name=name,
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "gpt-3.5-turbo-instruct",
                    "provider": "openai",
                    "task": "llm/v1/completions",
                    "openai_config": {
                        "openai_api_key": "{{" + secret + "}}",
                    },
                },
            }
        ],
    },
)
try:
    llm = Databricks(
        endpoint_name=name,
        model_kwargs={"temperature": 0.1},
    )
    print(llm("I am"))
finally:
    client.delete_endpoint(endpoint=name)


# Foundation model - chat
chat = ChatDatabricks(
    endpoint="databricks-llama-2-70b-chat", params={"temperature": 0.1}
)
print(chat([HumanMessage(content="hello")]))

# Foundation model - embeddings
embeddings = DatabricksEmbeddings(endpoint="databricks-bge-large-en")
print(embeddings.embed_query("hello")[:3])

# Foundation model - completions
llm = Databricks(
    endpoint_name="databricks-mpt-7b-instruct", model_kwargs={"temperature": 0.1}
)
print(llm("hello"))
llm_chain = LLMChain(
    llm=llm,
    prompt=PromptTemplate(
        input_variables=["adjective"],
        template="Tell me a {adjective} joke",
    ),
)
print(llm_chain.run(adjective="funny"))

# serialization/deserialization
with tempfile.TemporaryDirectory() as tmpdir:
    print(tmpdir)
    path = f"{tmpdir}/llm.yaml"
    llm_chain.save(path)
    loaded_chain = load_chain(path)
    print(loaded_chain("funny"))

```

Output:

```
content='Hello! How can I assist you today?'
[-0.025058426, -0.01938856, -0.027781019]
[-0.025058426, -0.01938856, -0.027781019]
sorry, but I cannot continue the sentence as it is incomplete. Can you please provide more information or context?
Sure, here's a classic one for you:

Why don't scientists trust atoms?

Because they make up everything!
/var/folders/dz/cd_nvlf14g9g__n3ph0d_0pm0000gp/T/tmpx_4no6ad
{'adjective': 'funny', 'text': "Sure, here's a classic one for you:\n\nWhy don't scientists trust atoms?\n\nBecause they make up everything!"}
content='Hello! How can I assist you today?'
[-0.025058426, -0.01938856, -0.027781019]
[-0.025058426, -0.01938856, -0.027781019]
 a 23 year old female and I am currently studying for my master's degree
content="\nHello! It's nice to meet you. Is there something I can help you with or would you like to chat for a bit?"
[0.051055908203125, 0.007221221923828125, 0.003879547119140625]
[0.051055908203125, 0.007221221923828125, 0.003879547119140625]

hello back
 Well, I don't really know many jokes, but I do know this funny story...
/var/folders/dz/cd_nvlf14g9g__n3ph0d_0pm0000gp/T/tmp7_ds72ex
{'adjective': 'funny', 'text': " Well, I don't really know many jokes, but I do know this funny story..."}
```

</p>
</details>

The existing workflow doesn't break:

<details><summary>click</summary>
<p>

```python
import uuid

import mlflow
from mlflow.models import ModelSignature
from mlflow.types.schema import ColSpec, Schema


class MyModel(mlflow.pyfunc.PythonModel):
    def predict(self, context, model_input):
        return str(uuid.uuid4())


with mlflow.start_run():
    mlflow.pyfunc.log_model(
        "model",
        python_model=MyModel(),
        pip_requirements=["mlflow==2.8.1", "cloudpickle<3"],
        signature=ModelSignature(
            inputs=Schema(
                [
                    ColSpec("string", "prompt"),
                    ColSpec("string", "stop"),
                ]
            ),
            outputs=Schema(
                [
                    ColSpec(name=None, type="string"),
                ]
            ),
        ),
        registered_model_name=f"lang-{uuid.uuid4()}",
    )

# Manually create a serving endpoint with the registered model and run
from langchain.llms import Databricks

llm = Databricks(endpoint_name="<name>")
llm("hello")  # 9d0b2491-3d13-487c-bc02-1287f06ecae7
```

</p>
</details> 

## Follow-up tasks

(This PR is too large. I'll file a separate one for follow-up tasks.)

- Update `docs/docs/integrations/providers/mlflow_ai_gateway.mdx` and
`docs/docs/integrations/providers/databricks.md`.

---------

Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
Co-authored-by: Bagatur <baskaryan@gmail.com>
baskaryan pushed a commit that referenced this pull request Dec 4, 2023
Depends on #13699. Updates the existing mlflow and databricks examples.

---------

Co-authored-by: Ben Wilson <39283302+BenWilson2@users.noreply.github.com>
vladkol pushed a commit to vladkol/langchain that referenced this pull request Dec 4, 2023
Depends on langchain-ai#13699. Updates the existing mlflow and databricks examples.

---------

Co-authored-by: Ben Wilson <39283302+BenWilson2@users.noreply.github.com>
averikitsch pushed a commit to GoogleCloudPlatform/genai-databases-retrieval-app that referenced this pull request Dec 4, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [langchain](https://togithub.com/langchain-ai/langchain) | `==0.0.337`
-> `==0.0.345` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/langchain/0.0.345?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/langchain/0.0.345?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/langchain/0.0.337/0.0.345?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/langchain/0.0.337/0.0.345?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>langchain-ai/langchain (langchain)</summary>

###
[`v0.0.345`](https://togithub.com/langchain-ai/langchain/releases/tag/v0.0.345)

[Compare
Source](https://togithub.com/langchain-ai/langchain/compare/v0.0.344...v0.0.345)

#### What's Changed

- Adds OllamaFunctions wrapper by
[@&#8203;jacoblee93](https://togithub.com/jacoblee93) in
[https://github.com/langchain-ai/langchain/pull/13330](https://togithub.com/langchain-ai/langchain/pull/13330)
- Update metaphor_search.ipynb by
[@&#8203;HubertY](https://togithub.com/HubertY) in
[https://github.com/langchain-ai/langchain/pull/14093](https://togithub.com/langchain-ai/langchain/pull/14093)
- local docs build <5s by [@&#8203;efriis](https://togithub.com/efriis)
in
[https://github.com/langchain-ai/langchain/pull/14096](https://togithub.com/langchain-ai/langchain/pull/14096)
- Improve indexing performance for Postgres (remote database) for
refresh by [@&#8203;mescanne](https://togithub.com/mescanne) in
[https://github.com/langchain-ai/langchain/pull/14126](https://togithub.com/langchain-ai/langchain/pull/14126)
- Update invalid link by [@&#8203;YQisme](https://togithub.com/YQisme)
in
[https://github.com/langchain-ai/langchain/pull/14106](https://togithub.com/langchain-ai/langchain/pull/14106)
- templates\[patch]: opensearch readme update by
[@&#8203;efriis](https://togithub.com/efriis) in
[https://github.com/langchain-ai/langchain/pull/14103](https://togithub.com/langchain-ai/langchain/pull/14103)
- docs\[patch]: Update facebook.ipynb by
[@&#8203;169](https://togithub.com/169) in
[https://github.com/langchain-ai/langchain/pull/14102](https://togithub.com/langchain-ai/langchain/pull/14102)
- Template for Ollama + Multi-query retriever by
[@&#8203;rlancemartin](https://togithub.com/rlancemartin) in
[https://github.com/langchain-ai/langchain/pull/14092](https://togithub.com/langchain-ai/langchain/pull/14092)
- docs\[patch]: Update discord.ipynb by
[@&#8203;169](https://togithub.com/169) in
[https://github.com/langchain-ai/langchain/pull/14099](https://togithub.com/langchain-ai/langchain/pull/14099)
- \[Nits] Evaluation - Some Rendering Improvements by
[@&#8203;hinthornw](https://togithub.com/hinthornw) in
[https://github.com/langchain-ai/langchain/pull/14097](https://togithub.com/langchain-ai/langchain/pull/14097)
- Update Prompt Format Error by
[@&#8203;hinthornw](https://togithub.com/hinthornw) in
[https://github.com/langchain-ai/langchain/pull/14044](https://togithub.com/langchain-ai/langchain/pull/14044)
- Improve indexing performance for Postgres (remote database) for
refresh for async API by
[@&#8203;eyurtsev](https://togithub.com/eyurtsev) in
[https://github.com/langchain-ai/langchain/pull/14132](https://togithub.com/langchain-ai/langchain/pull/14132)
- Harrison/ibm by [@&#8203;hwchase17](https://togithub.com/hwchase17) in
[https://github.com/langchain-ai/langchain/pull/14133](https://togithub.com/langchain-ai/langchain/pull/14133)
- fix: set maxsplit when parse python function docstring by
[@&#8203;lijie-lee](https://togithub.com/lijie-lee) in
[https://github.com/langchain-ai/langchain/pull/14121](https://togithub.com/langchain-ai/langchain/pull/14121)
- fix: use async_embed_with_retry in \_aget_len_safe_embeddings by
[@&#8203;salqueng](https://togithub.com/salqueng) in
[https://github.com/langchain-ai/langchain/pull/14110](https://togithub.com/langchain-ai/langchain/pull/14110)
- docs\[patch]: Add mermaid JS theme dependency to docusaurus by
[@&#8203;akira](https://togithub.com/akira) in
[https://github.com/langchain-ai/langchain/pull/14051](https://togithub.com/langchain-ai/langchain/pull/14051)
- docs(ernie): add deprecated note for ErnieChatBot by
[@&#8203;axiangcoding](https://togithub.com/axiangcoding) in
[https://github.com/langchain-ai/langchain/pull/14061](https://togithub.com/langchain-ai/langchain/pull/14061)
- add contribs by [@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/14137](https://togithub.com/langchain-ai/langchain/pull/14137)
- Update text_splitter.py by
[@&#8203;govinda18](https://togithub.com/govinda18) in
[https://github.com/langchain-ai/langchain/pull/14025](https://togithub.com/langchain-ai/langchain/pull/14025)
- docs\[patch]: Add getting started section to LCEL doc by
[@&#8203;akira](https://togithub.com/akira) in
[https://github.com/langchain-ai/langchain/pull/14045](https://togithub.com/langchain-ai/langchain/pull/14045)
- Add unit tests for Huggingface dataset loader by
[@&#8203;Amyh102](https://togithub.com/Amyh102) in
[https://github.com/langchain-ai/langchain/pull/14053](https://togithub.com/langchain-ai/langchain/pull/14053)
- docs\[patch]: Fix templates/index by
[@&#8203;efriis](https://togithub.com/efriis) in
[https://github.com/langchain-ai/langchain/pull/14146](https://togithub.com/langchain-ai/langchain/pull/14146)
- Fix minor typos (casing) by [@&#8203;mjul](https://togithub.com/mjul)
in
[https://github.com/langchain-ai/langchain/pull/14138](https://togithub.com/langchain-ai/langchain/pull/14138)
- relock templates by [@&#8203;efriis](https://togithub.com/efriis) in
[https://github.com/langchain-ai/langchain/pull/14149](https://togithub.com/langchain-ai/langchain/pull/14149)
- Change RunnableMap to RunnableParallel for consistency by
[@&#8203;akira](https://togithub.com/akira) in
[https://github.com/langchain-ai/langchain/pull/14142](https://togithub.com/langchain-ai/langchain/pull/14142)
- docs\[patch]: docs local build by
[@&#8203;efriis](https://togithub.com/efriis) in
[https://github.com/langchain-ai/langchain/pull/14152](https://togithub.com/langchain-ai/langchain/pull/14152)
- Update Open CLIP embd by
[@&#8203;rlancemartin](https://togithub.com/rlancemartin) in
[https://github.com/langchain-ai/langchain/pull/14155](https://togithub.com/langchain-ai/langchain/pull/14155)
- Bagatur/lcel why doc by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/14089](https://togithub.com/langchain-ai/langchain/pull/14089)
- fix broken api docs links by
[@&#8203;efriis](https://togithub.com/efriis) in
[https://github.com/langchain-ai/langchain/pull/14154](https://togithub.com/langchain-ai/langchain/pull/14154)
- Improve file system blob loader and generic loader by
[@&#8203;eyurtsev](https://togithub.com/eyurtsev) in
[https://github.com/langchain-ai/langchain/pull/14004](https://togithub.com/langchain-ai/langchain/pull/14004)
- Title:fixed a bug that was causing the streaming transfer to not work…
by [@&#8203;quantum00549](https://togithub.com/quantum00549) in
[https://github.com/langchain-ai/langchain/pull/10827](https://togithub.com/langchain-ai/langchain/pull/10827)
- Added missing `py.typed` to `langchain_core` by
[@&#8203;jamesbraza](https://togithub.com/jamesbraza) in
[https://github.com/langchain-ai/langchain/pull/14143](https://togithub.com/langchain-ai/langchain/pull/14143)
- add azure ai data document loader by
[@&#8203;samuel100](https://togithub.com/samuel100) in
[https://github.com/langchain-ai/langchain/pull/13404](https://togithub.com/langchain-ai/langchain/pull/13404)
- fix: Running SQLDatabaseChain adds prefix "SQLQuery:\n" by
[@&#8203;ridha](https://togithub.com/ridha) in
[https://github.com/langchain-ai/langchain/pull/14058](https://togithub.com/langchain-ai/langchain/pull/14058)
- Support passing parameters to `llms.Databricks` and `llms.Mlflow` by
[@&#8203;harupy](https://togithub.com/harupy) in
[https://github.com/langchain-ai/langchain/pull/14100](https://togithub.com/langchain-ai/langchain/pull/14100)
- `BaseTracer` helper method for `Run` lookup by
[@&#8203;jamesbraza](https://togithub.com/jamesbraza) in
[https://github.com/langchain-ai/langchain/pull/14139](https://togithub.com/langchain-ai/langchain/pull/14139)
- core\[patch]: Release 0.0.9 by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/14182](https://togithub.com/langchain-ai/langchain/pull/14182)
- langchain\[patch]: Release langchain 0.0.345 by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/14184](https://togithub.com/langchain-ai/langchain/pull/14184)

#### New Contributors

- [@&#8203;HubertY](https://togithub.com/HubertY) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/14093](https://togithub.com/langchain-ai/langchain/pull/14093)
- [@&#8203;mescanne](https://togithub.com/mescanne) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/14126](https://togithub.com/langchain-ai/langchain/pull/14126)
- [@&#8203;YQisme](https://togithub.com/YQisme) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/14106](https://togithub.com/langchain-ai/langchain/pull/14106)
- [@&#8203;lijie-lee](https://togithub.com/lijie-lee) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/14121](https://togithub.com/langchain-ai/langchain/pull/14121)
- [@&#8203;salqueng](https://togithub.com/salqueng) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/14110](https://togithub.com/langchain-ai/langchain/pull/14110)
- [@&#8203;akira](https://togithub.com/akira) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/14051](https://togithub.com/langchain-ai/langchain/pull/14051)
- [@&#8203;govinda18](https://togithub.com/govinda18) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/14025](https://togithub.com/langchain-ai/langchain/pull/14025)
- [@&#8203;mjul](https://togithub.com/mjul) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/14138](https://togithub.com/langchain-ai/langchain/pull/14138)
- [@&#8203;quantum00549](https://togithub.com/quantum00549) made their
first contribution in
[https://github.com/langchain-ai/langchain/pull/10827](https://togithub.com/langchain-ai/langchain/pull/10827)
- [@&#8203;samuel100](https://togithub.com/samuel100) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13404](https://togithub.com/langchain-ai/langchain/pull/13404)
- [@&#8203;ridha](https://togithub.com/ridha) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/14058](https://togithub.com/langchain-ai/langchain/pull/14058)

**Full Changelog**:
https://github.com/langchain-ai/langchain/compare/v0.0.344...v0.0.345

###
[`v0.0.344`](https://togithub.com/langchain-ai/langchain/releases/tag/v0.0.344)

[Compare
Source](https://togithub.com/langchain-ai/langchain/compare/v0.0.343...v0.0.344)

#### What's Changed

- Reduce the number of tokens required to describe a Cypher/Neo4j schema
by [@&#8203;tomasonjo](https://togithub.com/tomasonjo) in
[https://github.com/langchain-ai/langchain/pull/13851](https://togithub.com/langchain-ai/langchain/pull/13851)
- Remove deprecated param and flexibility for prompt by
[@&#8203;toshish](https://togithub.com/toshish) in
[https://github.com/langchain-ai/langchain/pull/13310](https://togithub.com/langchain-ai/langchain/pull/13310)
- update pdf document loaders' metadata source to url for online pdf by
[@&#8203;123-fake-st](https://togithub.com/123-fake-st) in
[https://github.com/langchain-ai/langchain/pull/13274](https://togithub.com/langchain-ai/langchain/pull/13274)
- fix
[#&#8203;12899](https://togithub.com/langchain-ai/langchain/issues/12899)
by [@&#8203;yoch](https://togithub.com/yoch) in
[https://github.com/langchain-ai/langchain/pull/14029](https://togithub.com/langchain-ai/langchain/pull/14029)
- Mask API key for ForeFrontAI LLM by
[@&#8203;mmahmad](https://togithub.com/mmahmad) in
[https://github.com/langchain-ai/langchain/pull/14013](https://togithub.com/langchain-ai/langchain/pull/14013)
- add volcengine endpoint for LLM by
[@&#8203;h3l](https://togithub.com/h3l) in
[https://github.com/langchain-ai/langchain/pull/13942](https://togithub.com/langchain-ai/langchain/pull/13942)
- Extend serpapi tools by
[@&#8203;HamJaw1432](https://togithub.com/HamJaw1432) in
[https://github.com/langchain-ai/langchain/pull/13934](https://togithub.com/langchain-ai/langchain/pull/13934)
- Add multi-input Reddit search tool by
[@&#8203;clwillhuang](https://togithub.com/clwillhuang) in
[https://github.com/langchain-ai/langchain/pull/13893](https://togithub.com/langchain-ai/langchain/pull/13893)
- DROP BOX Loader Documentation Update by
[@&#8203;keenborder786](https://togithub.com/keenborder786) in
[https://github.com/langchain-ai/langchain/pull/14047](https://togithub.com/langchain-ai/langchain/pull/14047)
- Merriam-Webster Dictionary Tool by
[@&#8203;Zollerboy1](https://togithub.com/Zollerboy1) in
[https://github.com/langchain-ai/langchain/pull/12044](https://togithub.com/langchain-ai/langchain/pull/12044)
- Implemented MongoDB Atlas Self-Query Retriever by
[@&#8203;AthulVincent](https://togithub.com/AthulVincent) in
[https://github.com/langchain-ai/langchain/pull/13321](https://togithub.com/langchain-ai/langchain/pull/13321)
- Fix issue where response_if_no_docs_found is not implemented on async…
by [@&#8203;sudranga](https://togithub.com/sudranga) in
[https://github.com/langchain-ai/langchain/pull/13297](https://togithub.com/langchain-ai/langchain/pull/13297)
- Update index.mdx by
[@&#8203;NPuhlmann](https://togithub.com/NPuhlmann) in
[https://github.com/langchain-ai/langchain/pull/13285](https://togithub.com/langchain-ai/langchain/pull/13285)
- Support Vald secure connection by
[@&#8203;mtanig](https://togithub.com/mtanig) in
[https://github.com/langchain-ai/langchain/pull/13269](https://togithub.com/langchain-ai/langchain/pull/13269)
- Added support for a Pandas DataFrame OutputParser by
[@&#8203;RohanDey02](https://togithub.com/RohanDey02) in
[https://github.com/langchain-ai/langchain/pull/13257](https://togithub.com/langchain-ai/langchain/pull/13257)
- Fix .env file path in integration_test README.md by
[@&#8203;FacerAin](https://togithub.com/FacerAin) in
[https://github.com/langchain-ai/langchain/pull/14028](https://togithub.com/langchain-ai/langchain/pull/14028)
- templates\[patch]: rag-google-cloud-sdp readme by
[@&#8203;efriis](https://togithub.com/efriis) in
[https://github.com/langchain-ai/langchain/pull/14043](https://togithub.com/langchain-ai/langchain/pull/14043)
- Add \*\*kwargs to Langchain's dumps() to allow passing of json.dumps()
… by [@&#8203;jeremynac](https://togithub.com/jeremynac) in
[https://github.com/langchain-ai/langchain/pull/10628](https://togithub.com/langchain-ai/langchain/pull/10628)
- Rag redis template dependency update by
[@&#8203;tylerhutcherson](https://togithub.com/tylerhutcherson) in
[https://github.com/langchain-ai/langchain/pull/13614](https://togithub.com/langchain-ai/langchain/pull/13614)
- Migrate mlflow and databricks classes to deployments APIs. by
[@&#8203;harupy](https://togithub.com/harupy) in
[https://github.com/langchain-ai/langchain/pull/13699](https://togithub.com/langchain-ai/langchain/pull/13699)
- core\[patch]: release 0.0.8 by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/14086](https://togithub.com/langchain-ai/langchain/pull/14086)
- langchain\[patch]: release 0.0.344 by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/14095](https://togithub.com/langchain-ai/langchain/pull/14095)

#### New Contributors

- [@&#8203;yoch](https://togithub.com/yoch) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/14029](https://togithub.com/langchain-ai/langchain/pull/14029)
- [@&#8203;mmahmad](https://togithub.com/mmahmad) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/14013](https://togithub.com/langchain-ai/langchain/pull/14013)
- [@&#8203;HamJaw1432](https://togithub.com/HamJaw1432) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13934](https://togithub.com/langchain-ai/langchain/pull/13934)
- [@&#8203;clwillhuang](https://togithub.com/clwillhuang) made their
first contribution in
[https://github.com/langchain-ai/langchain/pull/13893](https://togithub.com/langchain-ai/langchain/pull/13893)
- [@&#8203;Zollerboy1](https://togithub.com/Zollerboy1) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/12044](https://togithub.com/langchain-ai/langchain/pull/12044)
- [@&#8203;AthulVincent](https://togithub.com/AthulVincent) made their
first contribution in
[https://github.com/langchain-ai/langchain/pull/13321](https://togithub.com/langchain-ai/langchain/pull/13321)
- [@&#8203;NPuhlmann](https://togithub.com/NPuhlmann) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13285](https://togithub.com/langchain-ai/langchain/pull/13285)
- [@&#8203;mtanig](https://togithub.com/mtanig) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13269](https://togithub.com/langchain-ai/langchain/pull/13269)
- [@&#8203;RohanDey02](https://togithub.com/RohanDey02) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13257](https://togithub.com/langchain-ai/langchain/pull/13257)

**Full Changelog**:
https://github.com/langchain-ai/langchain/compare/v0.0.343...v0.0.344

###
[`v0.0.343`](https://togithub.com/langchain-ai/langchain/releases/tag/v0.0.343)

[Compare
Source](https://togithub.com/langchain-ai/langchain/compare/v0.0.342...v0.0.343)

#### What's Changed

- Add rag google sensitive data protection template by
[@&#8203;juan-calvo-datatonic](https://togithub.com/juan-calvo-datatonic)
in
[https://github.com/langchain-ai/langchain/pull/13921](https://togithub.com/langchain-ai/langchain/pull/13921)
- experimental\[patch]: release 0.0.43 by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13570](https://togithub.com/langchain-ai/langchain/pull/13570)
- Updated DocugamiLoader with better support for hierarchical chunks by
[@&#8203;tjaffri](https://togithub.com/tjaffri) in
[https://github.com/langchain-ai/langchain/pull/13265](https://togithub.com/langchain-ai/langchain/pull/13265)
- Update CONTRIBUTING.md doc by [@&#8203;169](https://togithub.com/169)
in
[https://github.com/langchain-ai/langchain/pull/13965](https://togithub.com/langchain-ai/langchain/pull/13965)
- docs: top menu by [@&#8203;leo-gan](https://togithub.com/leo-gan) in
[https://github.com/langchain-ai/langchain/pull/13748](https://togithub.com/langchain-ai/langchain/pull/13748)
- experimental\[patch]: fixed namespace bug by
[@&#8203;leo-gan](https://togithub.com/leo-gan) in
[https://github.com/langchain-ai/langchain/pull/13585](https://togithub.com/langchain-ai/langchain/pull/13585)
- docs\[patch]: link to LangSmith docs by
[@&#8203;leo-gan](https://togithub.com/leo-gan) in
[https://github.com/langchain-ai/langchain/pull/13740](https://togithub.com/langchain-ai/langchain/pull/13740)
- renamed `google_vertex_ai_vector_search` notebook by
[@&#8203;leo-gan](https://togithub.com/leo-gan) in
[https://github.com/langchain-ai/langchain/pull/13484](https://togithub.com/langchain-ai/langchain/pull/13484)
- Remove `python_repl` from \_BASE_TOOLS by
[@&#8203;169](https://togithub.com/169) in
[https://github.com/langchain-ai/langchain/pull/13962](https://togithub.com/langchain-ai/langchain/pull/13962)
- Repair Wikipedia document loader `load_max_docs` and improve test
coverage. by [@&#8203;queenvictoria](https://togithub.com/queenvictoria)
in
[https://github.com/langchain-ai/langchain/pull/13769](https://togithub.com/langchain-ai/langchain/pull/13769)
- Set default region from boto3 session for Bedrock by
[@&#8203;Falydoor](https://togithub.com/Falydoor) in
[https://github.com/langchain-ai/langchain/pull/13694](https://togithub.com/langchain-ai/langchain/pull/13694)
- infra\[patch]: add base deps by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13998](https://togithub.com/langchain-ai/langchain/pull/13998)
- Library Licenses by [@&#8203;efriis](https://togithub.com/efriis) in
[https://github.com/langchain-ai/langchain/pull/13300](https://togithub.com/langchain-ai/langchain/pull/13300)
- docs\[patch]: RAG Cookbook example fix by
[@&#8203;waseemhnyc](https://togithub.com/waseemhnyc) in
[https://github.com/langchain-ai/langchain/pull/13914](https://togithub.com/langchain-ai/langchain/pull/13914)
- Switched VertexAI models from preview by
[@&#8203;lkuligin](https://togithub.com/lkuligin) in
[https://github.com/langchain-ai/langchain/pull/13657](https://togithub.com/langchain-ai/langchain/pull/13657)
- feat: mask api key for nlpcloud by
[@&#8203;lujingxuansc](https://togithub.com/lujingxuansc) in
[https://github.com/langchain-ai/langchain/pull/13945](https://togithub.com/langchain-ai/langchain/pull/13945)
- secretStr for baichuan chat model api key by
[@&#8203;nhywieza](https://togithub.com/nhywieza) in
[https://github.com/langchain-ai/langchain/pull/13946](https://togithub.com/langchain-ai/langchain/pull/13946)
- feat: mask api_key for jina by
[@&#8203;chyroc](https://togithub.com/chyroc) in
[https://github.com/langchain-ai/langchain/pull/13907](https://togithub.com/langchain-ai/langchain/pull/13907)
- Update openai/create_llm_result function to consider kwargs by
[@&#8203;darktheorys](https://togithub.com/darktheorys) in
[https://github.com/langchain-ai/langchain/pull/13815](https://togithub.com/langchain-ai/langchain/pull/13815)
- docs `OpenAI` platform page update by
[@&#8203;leo-gan](https://togithub.com/leo-gan) in
[https://github.com/langchain-ai/langchain/pull/14001](https://togithub.com/langchain-ai/langchain/pull/14001)
- docs `microsoft` page updates by
[@&#8203;leo-gan](https://togithub.com/leo-gan) in
[https://github.com/langchain-ai/langchain/pull/14000](https://togithub.com/langchain-ai/langchain/pull/14000)
- feat: Add ERNIE-Bot-8K model support for ErnieBotChat. by
[@&#8203;wangwei1237](https://togithub.com/wangwei1237) in
[https://github.com/langchain-ai/langchain/pull/13716](https://togithub.com/langchain-ai/langchain/pull/13716)
- \[docs] fix reduce prompt in summarization example by
[@&#8203;cmpadden](https://togithub.com/cmpadden) in
[https://github.com/langchain-ai/langchain/pull/13726](https://togithub.com/langchain-ai/langchain/pull/13726)
- Add Outline provider doc by
[@&#8203;yuskhan](https://togithub.com/yuskhan) in
[https://github.com/langchain-ai/langchain/pull/13938](https://togithub.com/langchain-ai/langchain/pull/13938)
- max length attribute for spacy splitter for large docs by
[@&#8203;kunal8164705](https://togithub.com/kunal8164705) in
[https://github.com/langchain-ai/langchain/pull/13875](https://togithub.com/langchain-ai/langchain/pull/13875)
- Fix: (issue
[#&#8203;13825](https://togithub.com/langchain-ai/langchain/issues/13825))
Getting an error with DallEAPIWrapper by
[@&#8203;ggeutzzang](https://togithub.com/ggeutzzang) in
[https://github.com/langchain-ai/langchain/pull/13874](https://togithub.com/langchain-ai/langchain/pull/13874)
- Add object parsing functionality by
[@&#8203;Amyh102](https://togithub.com/Amyh102) in
[https://github.com/langchain-ai/langchain/pull/13864](https://togithub.com/langchain-ai/langchain/pull/13864)
- small fix matching engine AttributeError - object has no attribute by
[@&#8203;saiwas](https://togithub.com/saiwas) in
[https://github.com/langchain-ai/langchain/pull/13763](https://togithub.com/langchain-ai/langchain/pull/13763)
- DOCS: added missing imports
([#&#8203;13736](https://togithub.com/langchain-ai/langchain/issues/13736))
by [@&#8203;Glueish](https://togithub.com/Glueish) in
[https://github.com/langchain-ai/langchain/pull/13737](https://togithub.com/langchain-ai/langchain/pull/13737)
- docs: Install langsmith from conda-forge by
[@&#8203;pavelzw](https://togithub.com/pavelzw) in
[https://github.com/langchain-ai/langchain/pull/13335](https://togithub.com/langchain-ai/langchain/pull/13335)
- Mask api key for Together LLM by
[@&#8203;normand1](https://togithub.com/normand1) in
[https://github.com/langchain-ai/langchain/pull/13981](https://togithub.com/langchain-ai/langchain/pull/13981)
- doc: update langchain version for mongodb integration by
[@&#8203;whitedogg13](https://togithub.com/whitedogg13) in
[https://github.com/langchain-ai/langchain/pull/14006](https://togithub.com/langchain-ai/langchain/pull/14006)
- Adds progress bar to GooglePalmEmbeddings by
[@&#8203;ugm2](https://togithub.com/ugm2) in
[https://github.com/langchain-ai/langchain/pull/13812](https://togithub.com/langchain-ai/langchain/pull/13812)
- Mathpix PDF loader supports arbitrary extra params by
[@&#8203;chadnorvell](https://togithub.com/chadnorvell) in
[https://github.com/langchain-ai/langchain/pull/13950](https://togithub.com/langchain-ai/langchain/pull/13950)
- Update typo in map.ipynb by
[@&#8203;nnmer](https://togithub.com/nnmer) in
[https://github.com/langchain-ai/langchain/pull/14030](https://togithub.com/langchain-ai/langchain/pull/14030)
- Improve HyDe with custom prompts and ability to supply the run_manager
by [@&#8203;yvesloy](https://togithub.com/yvesloy) in
[https://github.com/langchain-ai/langchain/pull/14016](https://togithub.com/langchain-ai/langchain/pull/14016)
- template pyproject updates by
[@&#8203;efriis](https://togithub.com/efriis) in
[https://github.com/langchain-ai/langchain/pull/14035](https://togithub.com/langchain-ai/langchain/pull/14035)
- langchain\[patch]: Release 0.0.343 by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/14037](https://togithub.com/langchain-ai/langchain/pull/14037)
- Adding new StackExchange API integration by
[@&#8203;SauhaardW](https://togithub.com/SauhaardW) in
[https://github.com/langchain-ai/langchain/pull/14002](https://togithub.com/langchain-ai/langchain/pull/14002)

#### New Contributors

- [@&#8203;queenvictoria](https://togithub.com/queenvictoria) made their
first contribution in
[https://github.com/langchain-ai/langchain/pull/13769](https://togithub.com/langchain-ai/langchain/pull/13769)
- [@&#8203;Falydoor](https://togithub.com/Falydoor) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13694](https://togithub.com/langchain-ai/langchain/pull/13694)
- [@&#8203;lujingxuansc](https://togithub.com/lujingxuansc) made their
first contribution in
[https://github.com/langchain-ai/langchain/pull/13945](https://togithub.com/langchain-ai/langchain/pull/13945)
- [@&#8203;nhywieza](https://togithub.com/nhywieza) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13946](https://togithub.com/langchain-ai/langchain/pull/13946)
- [@&#8203;darktheorys](https://togithub.com/darktheorys) made their
first contribution in
[https://github.com/langchain-ai/langchain/pull/13815](https://togithub.com/langchain-ai/langchain/pull/13815)
- [@&#8203;cmpadden](https://togithub.com/cmpadden) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13726](https://togithub.com/langchain-ai/langchain/pull/13726)
- [@&#8203;kunal8164705](https://togithub.com/kunal8164705) made their
first contribution in
[https://github.com/langchain-ai/langchain/pull/13875](https://togithub.com/langchain-ai/langchain/pull/13875)
- [@&#8203;Amyh102](https://togithub.com/Amyh102) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13864](https://togithub.com/langchain-ai/langchain/pull/13864)
- [@&#8203;saiwas](https://togithub.com/saiwas) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13763](https://togithub.com/langchain-ai/langchain/pull/13763)
- [@&#8203;Glueish](https://togithub.com/Glueish) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13737](https://togithub.com/langchain-ai/langchain/pull/13737)
- [@&#8203;pavelzw](https://togithub.com/pavelzw) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13335](https://togithub.com/langchain-ai/langchain/pull/13335)
- [@&#8203;normand1](https://togithub.com/normand1) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13981](https://togithub.com/langchain-ai/langchain/pull/13981)
- [@&#8203;whitedogg13](https://togithub.com/whitedogg13) made their
first contribution in
[https://github.com/langchain-ai/langchain/pull/14006](https://togithub.com/langchain-ai/langchain/pull/14006)
- [@&#8203;ugm2](https://togithub.com/ugm2) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13812](https://togithub.com/langchain-ai/langchain/pull/13812)
- [@&#8203;chadnorvell](https://togithub.com/chadnorvell) made their
first contribution in
[https://github.com/langchain-ai/langchain/pull/13950](https://togithub.com/langchain-ai/langchain/pull/13950)
- [@&#8203;nnmer](https://togithub.com/nnmer) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/14030](https://togithub.com/langchain-ai/langchain/pull/14030)
- [@&#8203;yvesloy](https://togithub.com/yvesloy) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/14016](https://togithub.com/langchain-ai/langchain/pull/14016)
- [@&#8203;SauhaardW](https://togithub.com/SauhaardW) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/14002](https://togithub.com/langchain-ai/langchain/pull/14002)

**Full Changelog**:
https://github.com/langchain-ai/langchain/compare/v0.0.342...v0.0.343

###
[`v0.0.342`](https://togithub.com/langchain-ai/langchain/releases/tag/v0.0.342)

[Compare
Source](https://togithub.com/langchain-ai/langchain/compare/v0.0.341...v0.0.342)

#### What's Changed

- Document Runnable Binding by
[@&#8203;eyurtsev](https://togithub.com/eyurtsev) in
[https://github.com/langchain-ai/langchain/pull/13927](https://togithub.com/langchain-ai/langchain/pull/13927)
- fixed VertexAIModelGarden class by
[@&#8203;lkuligin](https://togithub.com/lkuligin) in
[https://github.com/langchain-ai/langchain/pull/13917](https://togithub.com/langchain-ai/langchain/pull/13917)
- Add Databricks Vector Search as a new vector store by
[@&#8203;freemso](https://togithub.com/freemso) in
[https://github.com/langchain-ai/langchain/pull/13621](https://togithub.com/langchain-ai/langchain/pull/13621)
- fix: fix qianfan validate_environment typo by
[@&#8203;chyroc](https://togithub.com/chyroc) in
[https://github.com/langchain-ai/langchain/pull/13908](https://togithub.com/langchain-ai/langchain/pull/13908)
- IMPROVEMENT: import Document from core by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13905](https://togithub.com/langchain-ai/langchain/pull/13905)
- Update azure_cosmos_db.py by
[@&#8203;esoler-sage](https://togithub.com/esoler-sage) in
[https://github.com/langchain-ai/langchain/pull/13919](https://togithub.com/langchain-ai/langchain/pull/13919)
- Support for indexes that do not return a 'metadata' field in
'\_source' by [@&#8203;assaftibm](https://togithub.com/assaftibm) in
[https://github.com/langchain-ai/langchain/pull/13903](https://togithub.com/langchain-ai/langchain/pull/13903)
- fix(docs): link to question answering by
[@&#8203;riezebosch](https://togithub.com/riezebosch) in
[https://github.com/langchain-ai/langchain/pull/13806](https://togithub.com/langchain-ai/langchain/pull/13806)
- chore: typo by
[@&#8203;jiangying000](https://togithub.com/jiangying000) in
[https://github.com/langchain-ai/langchain/pull/13817](https://togithub.com/langchain-ai/langchain/pull/13817)
- Multitenant adddocs by
[@&#8203;jeremyb-data](https://togithub.com/jeremyb-data) in
[https://github.com/langchain-ai/langchain/pull/13827](https://togithub.com/langchain-ai/langchain/pull/13827)
- Docs `adapters` moved by
[@&#8203;leo-gan](https://togithub.com/leo-gan) in
[https://github.com/langchain-ai/langchain/pull/13862](https://togithub.com/langchain-ai/langchain/pull/13862)
- Add rag-opensearch template by
[@&#8203;rawwar](https://togithub.com/rawwar) in
[https://github.com/langchain-ai/langchain/pull/13501](https://togithub.com/langchain-ai/langchain/pull/13501)
- Add progress bar to OllamaEmbeddings by
[@&#8203;tylertitsworth](https://togithub.com/tylertitsworth) in
[https://github.com/langchain-ai/langchain/pull/13882](https://togithub.com/langchain-ai/langchain/pull/13882)
- The experimental package needs to be compatible with the usage of
importing agents by [@&#8203;169](https://togithub.com/169) in
[https://github.com/langchain-ai/langchain/pull/13839](https://togithub.com/langchain-ai/langchain/pull/13839)
- Update prompt injection model by
[@&#8203;asofter](https://togithub.com/asofter) in
[https://github.com/langchain-ai/langchain/pull/13930](https://togithub.com/langchain-ai/langchain/pull/13930)
- Make common utils public by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13932](https://togithub.com/langchain-ai/langchain/pull/13932)
- Adding `infinity` embedding integration. by
[@&#8203;michaelfeil](https://togithub.com/michaelfeil) in
[https://github.com/langchain-ai/langchain/pull/13928](https://togithub.com/langchain-ai/langchain/pull/13928)
- Implement stream() and astream() for agents by
[@&#8203;nfcampos](https://togithub.com/nfcampos) in
[https://github.com/langchain-ai/langchain/pull/12783](https://togithub.com/langchain-ai/langchain/pull/12783)
- RunnableLambda: create afunc instance from func when not provided by
[@&#8203;nbondoux](https://togithub.com/nbondoux) in
[https://github.com/langchain-ai/langchain/pull/13408](https://togithub.com/langchain-ai/langchain/pull/13408)
- RELEASE: core 0.0.7 by [@&#8203;efriis](https://togithub.com/efriis)
in
[https://github.com/langchain-ai/langchain/pull/13973](https://togithub.com/langchain-ai/langchain/pull/13973)
- Eval Error Key by [@&#8203;hinthornw](https://togithub.com/hinthornw)
in
[https://github.com/langchain-ai/langchain/pull/13974](https://togithub.com/langchain-ai/langchain/pull/13974)
- office365 toolkit bug fixes by
[@&#8203;leo-gan](https://togithub.com/leo-gan) in
[https://github.com/langchain-ai/langchain/pull/13618](https://togithub.com/langchain-ai/langchain/pull/13618)
- Fix `MarkdownHeaderTextSplitter` not recognizing tilde-fenced code
blocks by [@&#8203;unifyh](https://togithub.com/unifyh) in
[https://github.com/langchain-ai/langchain/pull/13511](https://togithub.com/langchain-ai/langchain/pull/13511)
- Use langchain core in-tree as a dev dependency by
[@&#8203;nfcampos](https://togithub.com/nfcampos) in
[https://github.com/langchain-ai/langchain/pull/13957](https://togithub.com/langchain-ai/langchain/pull/13957)
- Documentation: Reduce largest static image file size by
[@&#8203;rihardsgravis](https://togithub.com/rihardsgravis) in
[https://github.com/langchain-ai/langchain/pull/13508](https://togithub.com/langchain-ai/langchain/pull/13508)
- \[Evals] Add Project Tags by
[@&#8203;hinthornw](https://togithub.com/hinthornw) in
[https://github.com/langchain-ai/langchain/pull/13982](https://togithub.com/langchain-ai/langchain/pull/13982)
- iMessage loader: implement message content extraction from attributed…
by [@&#8203;YaySushi](https://togithub.com/YaySushi) in
[https://github.com/langchain-ai/langchain/pull/13634](https://togithub.com/langchain-ai/langchain/pull/13634)
- Fix broken link on Meilisearch vector-store documentation by
[@&#8203;alallema](https://togithub.com/alallema) in
[https://github.com/langchain-ai/langchain/pull/13604](https://togithub.com/langchain-ai/langchain/pull/13604)
- fix merge None value and non None value error by
[@&#8203;mengjincn](https://togithub.com/mengjincn) in
[https://github.com/langchain-ai/langchain/pull/13703](https://togithub.com/langchain-ai/langchain/pull/13703)
- Update the stable docs link by
[@&#8203;adroitvarun](https://togithub.com/adroitvarun) in
[https://github.com/langchain-ai/langchain/pull/13798](https://togithub.com/langchain-ai/langchain/pull/13798)
- AnthropicFunctions function_call compatibility by
[@&#8203;JohnnyFoulds](https://togithub.com/JohnnyFoulds) in
[https://github.com/langchain-ai/langchain/pull/13901](https://togithub.com/langchain-ai/langchain/pull/13901)
- Astra DB vector store, move constructor docstring to class docstring
by [@&#8203;hemidactylus](https://togithub.com/hemidactylus) in
[https://github.com/langchain-ai/langchain/pull/13784](https://togithub.com/langchain-ai/langchain/pull/13784)
- fix test deps by [@&#8203;baskaryan](https://togithub.com/baskaryan)
in
[https://github.com/langchain-ai/langchain/pull/13984](https://togithub.com/langchain-ai/langchain/pull/13984)
- Exclude Bedrock client and credentials_profile_name fields from
serialisation by [@&#8203;dqbd](https://togithub.com/dqbd) in
[https://github.com/langchain-ai/langchain/pull/13603](https://togithub.com/langchain-ai/langchain/pull/13603)
- Fixes for opengpts release by
[@&#8203;nfcampos](https://togithub.com/nfcampos) in
[https://github.com/langchain-ai/langchain/pull/13960](https://togithub.com/langchain-ai/langchain/pull/13960)
- In Runnable.stream_log build up final_output from adding output chunks
by [@&#8203;nfcampos](https://togithub.com/nfcampos) in
[https://github.com/langchain-ai/langchain/pull/12781](https://togithub.com/langchain-ai/langchain/pull/12781)
- Track RunnableAssign as a separate run trace by
[@&#8203;dqbd](https://togithub.com/dqbd) in
[https://github.com/langchain-ai/langchain/pull/13972](https://togithub.com/langchain-ai/langchain/pull/13972)
- core\[patch]: release 0.0.7 by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13989](https://togithub.com/langchain-ai/langchain/pull/13989)
- Add retriever for Knowledge Bases for Amazon Bedrock by
[@&#8203;dlqqq](https://togithub.com/dlqqq) in
[https://github.com/langchain-ai/langchain/pull/13980](https://togithub.com/langchain-ai/langchain/pull/13980)
- DOCS: update stack diagram by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13902](https://togithub.com/langchain-ai/langchain/pull/13902)
- langchain\[patch]: release 0.0.342 by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13992](https://togithub.com/langchain-ai/langchain/pull/13992)
- fix docs build by [@&#8203;baskaryan](https://togithub.com/baskaryan)
in
[https://github.com/langchain-ai/langchain/pull/13990](https://togithub.com/langchain-ai/langchain/pull/13990)
- langchain\[patch]: contributing test guide update by
[@&#8203;efriis](https://togithub.com/efriis) in
[https://github.com/langchain-ai/langchain/pull/13993](https://togithub.com/langchain-ai/langchain/pull/13993)

#### New Contributors

- [@&#8203;freemso](https://togithub.com/freemso) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13621](https://togithub.com/langchain-ai/langchain/pull/13621)
- [@&#8203;chyroc](https://togithub.com/chyroc) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13908](https://togithub.com/langchain-ai/langchain/pull/13908)
- [@&#8203;esoler-sage](https://togithub.com/esoler-sage) made their
first contribution in
[https://github.com/langchain-ai/langchain/pull/13919](https://togithub.com/langchain-ai/langchain/pull/13919)
- [@&#8203;assaftibm](https://togithub.com/assaftibm) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13903](https://togithub.com/langchain-ai/langchain/pull/13903)
- [@&#8203;riezebosch](https://togithub.com/riezebosch) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13806](https://togithub.com/langchain-ai/langchain/pull/13806)
- [@&#8203;jiangying000](https://togithub.com/jiangying000) made their
first contribution in
[https://github.com/langchain-ai/langchain/pull/13817](https://togithub.com/langchain-ai/langchain/pull/13817)
- [@&#8203;jeremyb-data](https://togithub.com/jeremyb-data) made their
first contribution in
[https://github.com/langchain-ai/langchain/pull/13827](https://togithub.com/langchain-ai/langchain/pull/13827)
- [@&#8203;rawwar](https://togithub.com/rawwar) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13501](https://togithub.com/langchain-ai/langchain/pull/13501)
- [@&#8203;tylertitsworth](https://togithub.com/tylertitsworth) made
their first contribution in
[https://github.com/langchain-ai/langchain/pull/13882](https://togithub.com/langchain-ai/langchain/pull/13882)
- [@&#8203;169](https://togithub.com/169) made their first contribution
in
[https://github.com/langchain-ai/langchain/pull/13839](https://togithub.com/langchain-ai/langchain/pull/13839)
- [@&#8203;asofter](https://togithub.com/asofter) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13930](https://togithub.com/langchain-ai/langchain/pull/13930)
- [@&#8203;nbondoux](https://togithub.com/nbondoux) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13408](https://togithub.com/langchain-ai/langchain/pull/13408)
- [@&#8203;rihardsgravis](https://togithub.com/rihardsgravis) made their
first contribution in
[https://github.com/langchain-ai/langchain/pull/13508](https://togithub.com/langchain-ai/langchain/pull/13508)
- [@&#8203;YaySushi](https://togithub.com/YaySushi) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13634](https://togithub.com/langchain-ai/langchain/pull/13634)
- [@&#8203;mengjincn](https://togithub.com/mengjincn) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13703](https://togithub.com/langchain-ai/langchain/pull/13703)
- [@&#8203;adroitvarun](https://togithub.com/adroitvarun) made their
first contribution in
[https://github.com/langchain-ai/langchain/pull/13798](https://togithub.com/langchain-ai/langchain/pull/13798)
- [@&#8203;JohnnyFoulds](https://togithub.com/JohnnyFoulds) made their
first contribution in
[https://github.com/langchain-ai/langchain/pull/13901](https://togithub.com/langchain-ai/langchain/pull/13901)

**Full Changelog**:
https://github.com/langchain-ai/langchain/compare/v0.0.341...v0.0.342

###
[`v0.0.341`](https://togithub.com/langchain-ai/langchain/releases/tag/v0.0.341)

[Compare
Source](https://togithub.com/langchain-ai/langchain/compare/v0.0.340...v0.0.341)

#### What's Changed

- Revert "INFRA: temp rm master condition
([#&#8203;13753](https://togithub.com/langchain-ai/langchain/issues/13753))"
by [@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13759](https://togithub.com/langchain-ai/langchain/pull/13759)
- RELEASE: core 0.0.5 by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13786](https://togithub.com/langchain-ai/langchain/pull/13786)
- bump 0.0.339rc2 by [@&#8203;baskaryan](https://togithub.com/baskaryan)
in
[https://github.com/langchain-ai/langchain/pull/13787](https://togithub.com/langchain-ai/langchain/pull/13787)
- BUGFIX: Import types and typevars from core by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13829](https://togithub.com/langchain-ai/langchain/pull/13829)
- Astra DB, chat message history by
[@&#8203;hemidactylus](https://togithub.com/hemidactylus) in
[https://github.com/langchain-ai/langchain/pull/13836](https://togithub.com/langchain-ai/langchain/pull/13836)
- Astra DB, LLM cache classes (exact-match and semantic cache) by
[@&#8203;hemidactylus](https://togithub.com/hemidactylus) in
[https://github.com/langchain-ai/langchain/pull/13834](https://togithub.com/langchain-ai/langchain/pull/13834)
- Added title metadata to GoogleDriveLoader for optional File Loaders by
[@&#8203;raelix](https://togithub.com/raelix) in
[https://github.com/langchain-ai/langchain/pull/13832](https://togithub.com/langchain-ai/langchain/pull/13832)
- RELEASE: core 0.0.6 by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13853](https://togithub.com/langchain-ai/langchain/pull/13853)
- bump 0.0.339rc3 by [@&#8203;baskaryan](https://togithub.com/baskaryan)
in
[https://github.com/langchain-ai/langchain/pull/13852](https://togithub.com/langchain-ai/langchain/pull/13852)
- add skeleton of thought by
[@&#8203;hwchase17](https://togithub.com/hwchase17) in
[https://github.com/langchain-ai/langchain/pull/13883](https://togithub.com/langchain-ai/langchain/pull/13883)
- DOC: Fix Sample Code for Compatibility with Pydantic 2.0 by
[@&#8203;ggeutzzang](https://togithub.com/ggeutzzang) in
[https://github.com/langchain-ai/langchain/pull/13890](https://togithub.com/langchain-ai/langchain/pull/13890)
- Add retriever for Outline by
[@&#8203;yuskhan](https://togithub.com/yuskhan) in
[https://github.com/langchain-ai/langchain/pull/13889](https://togithub.com/langchain-ai/langchain/pull/13889)
- export more types by
[@&#8203;hwchase17](https://togithub.com/hwchase17) in
[https://github.com/langchain-ai/langchain/pull/13886](https://togithub.com/langchain-ai/langchain/pull/13886)
- docs: fix link to `local_retrieval_qa` by
[@&#8203;superpung](https://togithub.com/superpung) in
[https://github.com/langchain-ai/langchain/pull/13872](https://togithub.com/langchain-ai/langchain/pull/13872)
- Fix bugs with Cypher validation by
[@&#8203;tomasonjo](https://togithub.com/tomasonjo) in
[https://github.com/langchain-ai/langchain/pull/13849](https://togithub.com/langchain-ai/langchain/pull/13849)
- Update llamacpp.ipynb by
[@&#8203;eltociear](https://togithub.com/eltociear) in
[https://github.com/langchain-ai/langchain/pull/13840](https://togithub.com/langchain-ai/langchain/pull/13840)
- Add OneNote document loader by
[@&#8203;Dylan20XX](https://togithub.com/Dylan20XX) in
[https://github.com/langchain-ai/langchain/pull/13841](https://togithub.com/langchain-ai/langchain/pull/13841)
- DOCS: fixed error in the docstring of RunnablePassthrough class by
[@&#8203;ggeutzzang](https://togithub.com/ggeutzzang) in
[https://github.com/langchain-ai/langchain/pull/13843](https://togithub.com/langchain-ai/langchain/pull/13843)
- Simplified Docugami cookbook to remove code now available in docugami
library by [@&#8203;tjaffri](https://togithub.com/tjaffri) in
[https://github.com/langchain-ai/langchain/pull/13828](https://togithub.com/langchain-ai/langchain/pull/13828)
- Add Cypher template diagrams by
[@&#8203;tomasonjo](https://togithub.com/tomasonjo) in
[https://github.com/langchain-ai/langchain/pull/13913](https://togithub.com/langchain-ai/langchain/pull/13913)
- Add option to prefix config keys in configurable_alts by
[@&#8203;nfcampos](https://togithub.com/nfcampos) in
[https://github.com/langchain-ai/langchain/pull/13714](https://togithub.com/langchain-ai/langchain/pull/13714)
- fix chat prompt loading from config by
[@&#8203;umair313](https://togithub.com/umair313) in
[https://github.com/langchain-ai/langchain/pull/13818](https://togithub.com/langchain-ai/langchain/pull/13818)
- Update root poetry lock with core by
[@&#8203;nfcampos](https://togithub.com/nfcampos) in
[https://github.com/langchain-ai/langchain/pull/13922](https://togithub.com/langchain-ai/langchain/pull/13922)
- RELEASE: 0.0.341 by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13926](https://togithub.com/langchain-ai/langchain/pull/13926)

#### New Contributors

- [@&#8203;raelix](https://togithub.com/raelix) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13832](https://togithub.com/langchain-ai/langchain/pull/13832)
- [@&#8203;ggeutzzang](https://togithub.com/ggeutzzang) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13890](https://togithub.com/langchain-ai/langchain/pull/13890)
- [@&#8203;yuskhan](https://togithub.com/yuskhan) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13889](https://togithub.com/langchain-ai/langchain/pull/13889)
- [@&#8203;superpung](https://togithub.com/superpung) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13872](https://togithub.com/langchain-ai/langchain/pull/13872)
- [@&#8203;Dylan20XX](https://togithub.com/Dylan20XX) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13841](https://togithub.com/langchain-ai/langchain/pull/13841)

**Full Changelog**:
https://github.com/langchain-ai/langchain/compare/v0.0.340...v0.0.341

###
[`v0.0.340`](https://togithub.com/langchain-ai/langchain/releases/tag/v0.0.340)

[Compare
Source](https://togithub.com/langchain-ai/langchain/compare/v0.0.339...v0.0.340)

#### What's Changed

- DOCS: update rag use case images by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13615](https://togithub.com/langchain-ai/langchain/pull/13615)
- WIP: core by [@&#8203;hwchase17](https://togithub.com/hwchase17) in
[https://github.com/langchain-ai/langchain/pull/13577](https://togithub.com/langchain-ai/langchain/pull/13577)
- Add core as dep by [@&#8203;baskaryan](https://togithub.com/baskaryan)
in
[https://github.com/langchain-ai/langchain/pull/13623](https://togithub.com/langchain-ai/langchain/pull/13623)
- Add template for gpt-crawler by
[@&#8203;rlancemartin](https://togithub.com/rlancemartin) in
[https://github.com/langchain-ai/langchain/pull/13625](https://togithub.com/langchain-ai/langchain/pull/13625)
- Use pytest asyncio auto mode by
[@&#8203;nfcampos](https://togithub.com/nfcampos) in
[https://github.com/langchain-ai/langchain/pull/13643](https://togithub.com/langchain-ai/langchain/pull/13643)
- Add error rate by [@&#8203;hinthornw](https://togithub.com/hinthornw)
in
[https://github.com/langchain-ai/langchain/pull/13568](https://togithub.com/langchain-ai/langchain/pull/13568)
- Core refac by [@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13627](https://togithub.com/langchain-ai/langchain/pull/13627)
- bump 0.0.339rc0 by [@&#8203;baskaryan](https://togithub.com/baskaryan)
in
[https://github.com/langchain-ai/langchain/pull/13664](https://togithub.com/langchain-ai/langchain/pull/13664)
- fix templates dockerfile by
[@&#8203;jakerachleff](https://togithub.com/jakerachleff) in
[https://github.com/langchain-ai/langchain/pull/13672](https://togithub.com/langchain-ai/langchain/pull/13672)
- update langserve to v0.0.30 by
[@&#8203;jakerachleff](https://togithub.com/jakerachleff) in
[https://github.com/langchain-ai/langchain/pull/13673](https://togithub.com/langchain-ai/langchain/pull/13673)
- docugami cookbook by [@&#8203;tjaffri](https://togithub.com/tjaffri)
in
[https://github.com/langchain-ai/langchain/pull/13183](https://togithub.com/langchain-ai/langchain/pull/13183)
- CLI 0.0.19 by [@&#8203;efriis](https://togithub.com/efriis) in
[https://github.com/langchain-ai/langchain/pull/13677](https://togithub.com/langchain-ai/langchain/pull/13677)
- Update name by [@&#8203;hinthornw](https://togithub.com/hinthornw) in
[https://github.com/langchain-ai/langchain/pull/13676](https://togithub.com/langchain-ai/langchain/pull/13676)
- more core fixes by [@&#8203;baskaryan](https://togithub.com/baskaryan)
in
[https://github.com/langchain-ai/langchain/pull/13665](https://togithub.com/langchain-ai/langchain/pull/13665)
- Bagatur/core utils by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13688](https://togithub.com/langchain-ai/langchain/pull/13688)
- add callback import test by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13689](https://togithub.com/langchain-ai/langchain/pull/13689)
- bump core dep 0.0.3 by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13690](https://togithub.com/langchain-ai/langchain/pull/13690)
- fixed import error for BashOutputParser by
[@&#8203;gyliu513](https://togithub.com/gyliu513) in
[https://github.com/langchain-ai/langchain/pull/13680](https://togithub.com/langchain-ai/langchain/pull/13680)
- remove openai api key from cookbook by
[@&#8203;gyliu513](https://togithub.com/gyliu513) in
[https://github.com/langchain-ai/langchain/pull/13633](https://togithub.com/langchain-ai/langchain/pull/13633)
- Update bedrock.py to fix bug by
[@&#8203;ruanwz](https://togithub.com/ruanwz) in
[https://github.com/langchain-ai/langchain/pull/13646](https://togithub.com/langchain-ai/langchain/pull/13646)
- BUG fix anthropic models on bedrock by
[@&#8203;efriis](https://togithub.com/efriis) in
[https://github.com/langchain-ai/langchain/pull/13629](https://togithub.com/langchain-ai/langchain/pull/13629)
- Lint for imports by [@&#8203;efriis](https://togithub.com/efriis) in
[https://github.com/langchain-ai/langchain/pull/13632](https://togithub.com/langchain-ai/langchain/pull/13632)
- Added partial_variables to
BaseStringMessagePromptTemplate.from_template(...) by
[@&#8203;jponf](https://togithub.com/jponf) in
[https://github.com/langchain-ai/langchain/pull/13645](https://togithub.com/langchain-ai/langchain/pull/13645)
- chore: add serializer for tool message by
[@&#8203;tanujtiwari-at](https://togithub.com/tanujtiwari-at) in
[https://github.com/langchain-ai/langchain/pull/13626](https://togithub.com/langchain-ai/langchain/pull/13626)
- VoyageEmbeddings embed_general_texts by
[@&#8203;thomas0809](https://togithub.com/thomas0809) in
[https://github.com/langchain-ai/langchain/pull/13620](https://togithub.com/langchain-ai/langchain/pull/13620)
- BUGFIX: llm backwards compat imports by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13698](https://togithub.com/langchain-ai/langchain/pull/13698)
- fix the problem that redis vector store will change metadata with val…
by [@&#8203;dandanwei](https://togithub.com/dandanwei) in
[https://github.com/langchain-ai/langchain/pull/13652](https://togithub.com/langchain-ai/langchain/pull/13652)
- IMPROVEMENT: Conditionally import for type hints by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13700](https://togithub.com/langchain-ai/langchain/pull/13700)
- Template Metadata pt 1 by
[@&#8203;efriis](https://togithub.com/efriis) in
[https://github.com/langchain-ai/langchain/pull/13691](https://togithub.com/langchain-ai/langchain/pull/13691)
- BUGFIX: add prompt imports for backwards compat by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13702](https://togithub.com/langchain-ai/langchain/pull/13702)
- Fix locking by [@&#8203;hinthornw](https://togithub.com/hinthornw) in
[https://github.com/langchain-ai/langchain/pull/13725](https://togithub.com/langchain-ai/langchain/pull/13725)
- Fix typo/line break in python code by
[@&#8203;h3l](https://togithub.com/h3l) in
[https://github.com/langchain-ai/langchain/pull/13708](https://togithub.com/langchain-ai/langchain/pull/13708)
- REFACTOR: combine core documents files by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13733](https://togithub.com/langchain-ai/langchain/pull/13733)
- DOCS: fix core api ref build by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13744](https://togithub.com/langchain-ai/langchain/pull/13744)
- INFRA: run LC ci after core changes by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13742](https://togithub.com/langchain-ai/langchain/pull/13742)
- Bagatur/bump core 4 by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13745](https://togithub.com/langchain-ai/langchain/pull/13745)
- RELEASE: 0.0.339rc1 by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13746](https://togithub.com/langchain-ai/langchain/pull/13746)
- DOCS: core editable dep api refs by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13747](https://togithub.com/langchain-ai/langchain/pull/13747)
- Add Batch Size kwarg to the llm start callback by
[@&#8203;hinthornw](https://togithub.com/hinthornw) in
[https://github.com/langchain-ai/langchain/pull/13483](https://togithub.com/langchain-ai/langchain/pull/13483)
- IMPROVEMENT: filter global warnings properly by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13754](https://togithub.com/langchain-ai/langchain/pull/13754)
- rm master condition by
[@&#8203;baskaryan](https://togithub.com/baskaryan) in
[https://github.com/langchain-ai/langchain/pull/13753](https://togithub.com/langchain-ai/langchain/pull/13753)

#### New Contributors

- [@&#8203;gyliu513](https://togithub.com/gyliu513) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13680](https://togithub.com/langchain-ai/langchain/pull/13680)
- [@&#8203;jponf](https://togithub.com/jponf) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13645](https://togithub.com/langchain-ai/langchain/pull/13645)
- [@&#8203;dandanwei](https://togithub.com/dandanwei) made their first
contribution in
[https://github.com/langchain-ai/langchain/pull/13652](https://togithub.com/langchain-ai/langchain/pull/13652)
-   [@&#8203;h3l](https://togithub.com/h3l) made their first con

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Never, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/GoogleCloudPlatform/genai-databases-retrieval-app).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy44MS4zIiwidXBkYXRlZEluVmVyIjoiMzcuODEuMyIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->
aymeric-roucher pushed a commit to andrewrreed/langchain that referenced this pull request Dec 11, 2023
…s APIs. (langchain-ai#13699)

## Description

Related to mlflow/mlflow#10420. MLflow AI
gateway will be deprecated and replaced by the `mlflow.deployments`
module. Happy to split this PR if it's too large.

```
pip install git+https://github.com/langchain-ai/langchain.git@refs/pull/13699/merge#subdirectory=libs/langchain
```

## Dependencies

Install mlflow from mlflow/mlflow#10420:

```
pip install git+https://github.com/mlflow/mlflow.git@refs/pull/10420/merge
```

## Testing plan

The following code works fine on local and databricks:

<details><summary>Click</summary>
<p>

```python
"""
Setup
-----
mlflow deployments start-server --config-path examples/gateway/openai/config.yaml
databricks secrets create-scope <scope>
databricks secrets put-secret <scope> openai-api-key --string-value $OPENAI_API_KEY

Run
---
python /path/to/this/file.py secrets/<scope>/openai-api-key
"""
from langchain.chat_models import ChatMlflow, ChatDatabricks
from langchain.embeddings import MlflowEmbeddings, DatabricksEmbeddings
from langchain.llms import Databricks, Mlflow
from langchain.schema.messages import HumanMessage
from langchain.chains.loading import load_chain
from mlflow.deployments import get_deploy_client
import uuid
import sys
import tempfile
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

###############################
# MLflow
###############################
chat = ChatMlflow(
    target_uri="http://127.0.0.1:5000", endpoint="chat", params={"temperature": 0.1}
)
print(chat([HumanMessage(content="hello")]))

embeddings = MlflowEmbeddings(target_uri="http://127.0.0.1:5000", endpoint="embeddings")
print(embeddings.embed_query("hello")[:3])
print(embeddings.embed_documents(["hello", "world"])[0][:3])

llm = Mlflow(
    target_uri="http://127.0.0.1:5000",
    endpoint="completions",
    params={"temperature": 0.1},
)
print(llm("I am"))

llm_chain = LLMChain(
    llm=llm,
    prompt=PromptTemplate(
        input_variables=["adjective"],
        template="Tell me a {adjective} joke",
    ),
)
print(llm_chain.run(adjective="funny"))

# serialization/deserialization
with tempfile.TemporaryDirectory() as tmpdir:
    print(tmpdir)
    path = f"{tmpdir}/llm.yaml"
    llm_chain.save(path)
    loaded_chain = load_chain(path)
    print(loaded_chain("funny"))

###############################
# Databricks
###############################
secret = sys.argv[1]
client = get_deploy_client("databricks")

# External - chat
name = f"chat-{uuid.uuid4()}"
client.create_endpoint(
    name=name,
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "gpt-4",
                    "provider": "openai",
                    "task": "llm/v1/chat",
                    "openai_config": {
                        "openai_api_key": "{{" + secret + "}}",
                    },
                },
            }
        ],
    },
)
try:
    chat = ChatDatabricks(
        target_uri="databricks", endpoint=name, params={"temperature": 0.1}
    )
    print(chat([HumanMessage(content="hello")]))
finally:
    client.delete_endpoint(endpoint=name)

# External - embeddings
name = f"embeddings-{uuid.uuid4()}"
client.create_endpoint(
    name=name,
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "text-embedding-ada-002",
                    "provider": "openai",
                    "task": "llm/v1/embeddings",
                    "openai_config": {
                        "openai_api_key": "{{" + secret + "}}",
                    },
                },
            }
        ],
    },
)
try:
    embeddings = DatabricksEmbeddings(target_uri="databricks", endpoint=name)
    print(embeddings.embed_query("hello")[:3])
    print(embeddings.embed_documents(["hello", "world"])[0][:3])
finally:
    client.delete_endpoint(endpoint=name)

# External - completions
name = f"completions-{uuid.uuid4()}"
client.create_endpoint(
    name=name,
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "gpt-3.5-turbo-instruct",
                    "provider": "openai",
                    "task": "llm/v1/completions",
                    "openai_config": {
                        "openai_api_key": "{{" + secret + "}}",
                    },
                },
            }
        ],
    },
)
try:
    llm = Databricks(
        endpoint_name=name,
        model_kwargs={"temperature": 0.1},
    )
    print(llm("I am"))
finally:
    client.delete_endpoint(endpoint=name)


# Foundation model - chat
chat = ChatDatabricks(
    endpoint="databricks-llama-2-70b-chat", params={"temperature": 0.1}
)
print(chat([HumanMessage(content="hello")]))

# Foundation model - embeddings
embeddings = DatabricksEmbeddings(endpoint="databricks-bge-large-en")
print(embeddings.embed_query("hello")[:3])

# Foundation model - completions
llm = Databricks(
    endpoint_name="databricks-mpt-7b-instruct", model_kwargs={"temperature": 0.1}
)
print(llm("hello"))
llm_chain = LLMChain(
    llm=llm,
    prompt=PromptTemplate(
        input_variables=["adjective"],
        template="Tell me a {adjective} joke",
    ),
)
print(llm_chain.run(adjective="funny"))

# serialization/deserialization
with tempfile.TemporaryDirectory() as tmpdir:
    print(tmpdir)
    path = f"{tmpdir}/llm.yaml"
    llm_chain.save(path)
    loaded_chain = load_chain(path)
    print(loaded_chain("funny"))

```

Output:

```
content='Hello! How can I assist you today?'
[-0.025058426, -0.01938856, -0.027781019]
[-0.025058426, -0.01938856, -0.027781019]
sorry, but I cannot continue the sentence as it is incomplete. Can you please provide more information or context?
Sure, here's a classic one for you:

Why don't scientists trust atoms?

Because they make up everything!
/var/folders/dz/cd_nvlf14g9g__n3ph0d_0pm0000gp/T/tmpx_4no6ad
{'adjective': 'funny', 'text': "Sure, here's a classic one for you:\n\nWhy don't scientists trust atoms?\n\nBecause they make up everything!"}
content='Hello! How can I assist you today?'
[-0.025058426, -0.01938856, -0.027781019]
[-0.025058426, -0.01938856, -0.027781019]
 a 23 year old female and I am currently studying for my master's degree
content="\nHello! It's nice to meet you. Is there something I can help you with or would you like to chat for a bit?"
[0.051055908203125, 0.007221221923828125, 0.003879547119140625]
[0.051055908203125, 0.007221221923828125, 0.003879547119140625]

hello back
 Well, I don't really know many jokes, but I do know this funny story...
/var/folders/dz/cd_nvlf14g9g__n3ph0d_0pm0000gp/T/tmp7_ds72ex
{'adjective': 'funny', 'text': " Well, I don't really know many jokes, but I do know this funny story..."}
```

</p>
</details>

The existing workflow doesn't break:

<details><summary>click</summary>
<p>

```python
import uuid

import mlflow
from mlflow.models import ModelSignature
from mlflow.types.schema import ColSpec, Schema


class MyModel(mlflow.pyfunc.PythonModel):
    def predict(self, context, model_input):
        return str(uuid.uuid4())


with mlflow.start_run():
    mlflow.pyfunc.log_model(
        "model",
        python_model=MyModel(),
        pip_requirements=["mlflow==2.8.1", "cloudpickle<3"],
        signature=ModelSignature(
            inputs=Schema(
                [
                    ColSpec("string", "prompt"),
                    ColSpec("string", "stop"),
                ]
            ),
            outputs=Schema(
                [
                    ColSpec(name=None, type="string"),
                ]
            ),
        ),
        registered_model_name=f"lang-{uuid.uuid4()}",
    )

# Manually create a serving endpoint with the registered model and run
from langchain.llms import Databricks

llm = Databricks(endpoint_name="<name>")
llm("hello")  # 9d0b2491-3d13-487c-bc02-1287f06ecae7
```

</p>
</details> 

## Follow-up tasks

(This PR is too large. I'll file a separate one for follow-up tasks.)

- Update `docs/docs/integrations/providers/mlflow_ai_gateway.mdx` and
`docs/docs/integrations/providers/databricks.md`.

---------

Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
Co-authored-by: Bagatur <baskaryan@gmail.com>
aymeric-roucher pushed a commit to andrewrreed/langchain that referenced this pull request Dec 11, 2023
Depends on langchain-ai#13699. Updates the existing mlflow and databricks examples.

---------

Co-authored-by: Ben Wilson <39283302+BenWilson2@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lgtm PR looks good. Use to confirm that a PR is ready for merging. Ɑ: models Related to LLMs or chat model modules 🤖:refactor A large refactor of a feature(s) or restructuring of many files size:XL This PR changes 500-999 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants