Skip to content

Commit

Permalink
added octoai test (langchain-ai#21793)
Browse files Browse the repository at this point in the history
- [ ] **PR title**: community: add tests for ChatOctoAI

- [ ] **PR message**: 
Description: Added unit tests for the ChatOctoAI class in the community
package to ensure proper validation and default values. These tests
verify the correct initialization of fields, the handling of missing
required parameters, and the proper setting of aliases.
Issue: N/A
Dependencies: None

---------

Co-authored-by: ccurme <[email protected]>
Co-authored-by: Eugene Yurtsev <[email protected]>
  • Loading branch information
3 people authored Aug 29, 2024
1 parent 69f9acb commit a8af396
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 2 deletions.
4 changes: 2 additions & 2 deletions libs/community/langchain_community/chat_models/octoai.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ class ChatOctoAI(ChatOpenAI):
"""

octoai_api_base: str = Field(default=DEFAULT_API_BASE)
octoai_api_token: SecretStr = Field(default=None)
model_name: str = Field(default=DEFAULT_MODEL)
octoai_api_token: SecretStr = Field(default=None, alias="api_key")
model_name: str = Field(default=DEFAULT_MODEL, alias="model")

@property
def _llm_type(self) -> str:
Expand Down
51 changes: 51 additions & 0 deletions libs/community/tests/unit_tests/chat_models/test_octoai.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import pytest
from langchain_core.pydantic_v1 import SecretStr, ValidationError

from langchain_community.chat_models.octoai import ChatOctoAI

DEFAULT_API_BASE = "https://text.octoai.run/v1/"
DEFAULT_MODEL = "llama-2-13b-chat"


@pytest.mark.requires("openai")
def test__default_octoai_api_base() -> None:
chat = ChatOctoAI(octoai_api_token=SecretStr("test_token")) # type: ignore[call-arg]
assert chat.octoai_api_base == DEFAULT_API_BASE


@pytest.mark.requires("openai")
def test__default_octoai_api_token() -> None:
chat = ChatOctoAI(octoai_api_token=SecretStr("test_token")) # type: ignore[call-arg]
assert chat.octoai_api_token.get_secret_value() == "test_token"


@pytest.mark.requires("openai")
def test__default_model_name() -> None:
chat = ChatOctoAI(octoai_api_token=SecretStr("test_token")) # type: ignore[call-arg]
assert chat.model_name == DEFAULT_MODEL


@pytest.mark.requires("openai")
def test__field_aliases() -> None:
chat = ChatOctoAI(octoai_api_token=SecretStr("test_token"), model="custom-model") # type: ignore[call-arg]
assert chat.model_name == "custom-model"
assert chat.octoai_api_token.get_secret_value() == "test_token"


@pytest.mark.requires("openai")
def test__missing_octoai_api_token() -> None:
with pytest.raises(ValidationError) as e:
ChatOctoAI()
assert "Did not find octoai_api_token" in str(e)


@pytest.mark.requires("openai")
def test__all_fields_provided() -> None:
chat = ChatOctoAI( # type: ignore[call-arg]
octoai_api_token=SecretStr("test_token"),
model="custom-model",
octoai_api_base="https://custom.api/base/",
)
assert chat.octoai_api_base == "https://custom.api/base/"
assert chat.octoai_api_token.get_secret_value() == "test_token"
assert chat.model_name == "custom-model"

0 comments on commit a8af396

Please sign in to comment.