Skip to content

Commit

Permalink
anthropic[patch]: standardize init args (langchain-ai#20161)
Browse files Browse the repository at this point in the history
  • Loading branch information
baskaryan authored Apr 8, 2024
1 parent 3490d70 commit a27d88f
Show file tree
Hide file tree
Showing 7 changed files with 25 additions and 15 deletions.
4 changes: 2 additions & 2 deletions docs/docs/get_started/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -141,10 +141,10 @@ from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(model="claude-3-sonnet-20240229", temperature=0.2, max_tokens=1024)
```

If you'd prefer not to set an environment variable you can pass the key in directly via the `anthropic_api_key` named parameter when initiating the Anthropic Chat Model class:
If you'd prefer not to set an environment variable you can pass the key in directly via the `api_key` named parameter when initiating the Anthropic Chat Model class:

```python
llm = ChatAnthropic(anthropic_api_key="...")
llm = ChatAnthropic(api_key="...")
```

</TabItem>
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/integrations/chat/anthropic.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
"source": [
"The code provided assumes that your ANTHROPIC_API_KEY is set in your environment variables. If you would like to manually specify your API key and also choose a different model, you can use the following code:\n",
"```python\n",
"chat = ChatAnthropic(temperature=0, anthropic_api_key=\"YOUR_API_KEY\", model_name=\"claude-3-opus-20240229\")\n",
"chat = ChatAnthropic(temperature=0, api_key=\"YOUR_API_KEY\", model_name=\"claude-3-opus-20240229\")\n",
"\n",
"```\n",
"\n",
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/modules/model_io/chat/quick_start.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@
"source": [
"```{=mdx}\n",
"<ChatModelTabs\n",
" anthropicParams={`model=\"claude-3-sonnet-20240229\", api_key=\"...\"`}\n",
" openaiParams={`model=\"gpt-3.5-turbo-0125\", api_key=\"...\"`}\n",
" anthropicParams={`model=\"claude-3-sonnet-20240229\", anthropic_api_key=\"...\"`}\n",
" mistralParams={`model=\"mistral-large-latest\", api_key=\"...\"`}\n",
" fireworksParams={`model=\"accounts/fireworks/models/mixtral-8x7b-instruct\", api_key=\"...\"`}\n",
" googleParams={`model=\"gemini-pro\", google_api_key=\"...\"`}\n",
Expand Down
4 changes: 2 additions & 2 deletions docs/docs/modules/model_io/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -158,10 +158,10 @@ from langchain_anthropic import ChatAnthropic
chat_model = ChatAnthropic(model="claude-3-sonnet-20240229", temperature=0.2, max_tokens=1024)
```

If you'd prefer not to set an environment variable you can pass the key in directly via the `anthropic_api_key` named parameter when initiating the Anthropic Chat Model class:
If you'd prefer not to set an environment variable you can pass the key in directly via the `api_key` named parameter when initiating the Anthropic Chat Model class:

```python
chat_model = ChatAnthropic(anthropic_api_key="...")
chat_model = ChatAnthropic(api_key="...")
```

</TabItem>
Expand Down
4 changes: 2 additions & 2 deletions docs/docs/modules/model_io/quick_start.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,10 @@ from langchain_anthropic import ChatAnthropic
chat_model = ChatAnthropic(model="claude-3-sonnet-20240229", temperature=0.2, max_tokens=1024)
```

If you'd prefer not to set an environment variable you can pass the key in directly via the `anthropic_api_key` named parameter when initiating the Anthropic Chat Model class:
If you'd prefer not to set an environment variable you can pass the key in directly via the `api_key` named parameter when initiating the Anthropic Chat Model class:

```python
chat_model = ChatAnthropic(anthropic_api_key="...")
chat_model = ChatAnthropic(api_key="...")
```

</TabItem>
Expand Down
5 changes: 3 additions & 2 deletions libs/partners/anthropic/langchain_anthropic/chat_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -243,12 +243,13 @@ class Config:
top_p: Optional[float] = None
"""Total probability mass of tokens to consider at each step."""

default_request_timeout: Optional[float] = None
default_request_timeout: Optional[float] = Field(None, alias="timeout")
"""Timeout for requests to Anthropic Completion API. Default is 600 seconds."""

anthropic_api_url: str = "https://api.anthropic.com"

anthropic_api_key: Optional[SecretStr] = None
anthropic_api_key: Optional[SecretStr] = Field(None, alias="api_key")
"""Automatically read from env var `ANTHROPIC_API_KEY` if not provided."""

default_headers: Optional[Mapping[str, str]] = None
"""Headers to pass to the Anthropic clients, will be used for every API call."""
Expand Down
19 changes: 14 additions & 5 deletions libs/partners/anthropic/tests/unit_tests/test_chat_models.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,34 @@
"""Test chat model integration."""

import os
from typing import Any, Callable, Dict, Literal, Type
from typing import Any, Callable, Dict, Literal, Type, cast

import pytest
from anthropic.types import ContentBlock, Message, Usage
from langchain_core.messages import AIMessage, HumanMessage, SystemMessage, ToolMessage
from langchain_core.outputs import ChatGeneration, ChatResult
from langchain_core.pydantic_v1 import BaseModel, Field
from langchain_core.pydantic_v1 import BaseModel, Field, SecretStr
from langchain_core.tools import BaseTool

from langchain_anthropic import ChatAnthropic, ChatAnthropicMessages
from langchain_anthropic import ChatAnthropic
from langchain_anthropic.chat_models import _merge_messages, convert_to_anthropic_tool

os.environ["ANTHROPIC_API_KEY"] = "foo"


def test_initialization() -> None:
"""Test chat model initialization."""
ChatAnthropicMessages(model_name="claude-instant-1.2", anthropic_api_key="xyz")
ChatAnthropicMessages(model="claude-instant-1.2", anthropic_api_key="xyz")
for model in [
ChatAnthropic(model_name="claude-instant-1.2", api_key="xyz", timeout=2),
ChatAnthropic(
model="claude-instant-1.2",
anthropic_api_key="xyz",
default_request_timeout=2,
),
]:
assert model.model == "claude-instant-1.2"
assert cast(SecretStr, model.anthropic_api_key).get_secret_value() == "xyz"
assert model.default_request_timeout == 2.0


@pytest.mark.requires("anthropic")
Expand Down

0 comments on commit a27d88f

Please sign in to comment.