Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions src/metis/providers/llamacpp.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ def count_tokens(self, text: str, model: str | None = None) -> int:
class LlamaCppEmbeddingProvider(OpenAICompatibleEmbeddingProvider):
DEFAULT_BASE_URL = LlamaCppProvider.DEFAULT_BASE_URL
DEFAULT_API_KEY = LlamaCppProvider.DEFAULT_API_KEY
DEFAULT_CHECK_EMBEDDING_CTX_LENGTH = False
CONFIG_SPEC = ProviderConfigSpec(
display_name="llama.cpp embeddings",
required_keys=("code_embedding_model", "docs_embedding_model"),
Expand All @@ -75,6 +76,3 @@ class LlamaCppEmbeddingProvider(OpenAICompatibleEmbeddingProvider):
"docs_extra_kwargs",
),
)

def __init__(self, config):
super().__init__(config)
5 changes: 5 additions & 0 deletions src/metis/providers/openai_compatible.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ def get_chat_model(
class OpenAICompatibleEmbeddingProvider(EmbeddingProvider):
DEFAULT_BASE_URL: str | None = None
DEFAULT_API_KEY: str | None = None
DEFAULT_CHECK_EMBEDDING_CTX_LENGTH: bool | None = None

def __init__(self, config: OpenAICompatibleEmbeddingConfig) -> None:
self.config = config
Expand Down Expand Up @@ -154,6 +155,10 @@ def _build_embedding_model(
params["base_url"] = self.base_url
if self.default_headers:
params["default_headers"] = self.default_headers
if self.DEFAULT_CHECK_EMBEDDING_CTX_LENGTH is not None:
params["check_embedding_ctx_length"] = (
self.DEFAULT_CHECK_EMBEDDING_CTX_LENGTH
)
if extra_kwargs:
params.update(extra_kwargs)

Expand Down
8 changes: 8 additions & 0 deletions tests/test_openai_compatible_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from langchain_openai import ChatOpenAI

from metis.providers.embedding_adapter import LangChainEmbeddingAdapter
from metis.providers.llamacpp import LlamaCppEmbeddingProvider
from metis.providers.openai_compatible import OpenAICompatibleChatConfig
from metis.providers.openai_compatible import OpenAICompatibleChatProvider
from metis.providers.openai_compatible import OpenAICompatibleEmbeddingConfig
Expand Down Expand Up @@ -103,3 +104,10 @@ def test_embedding_provider_builds_separate_code_and_docs_models() -> None:
assert code_client.openai_api_base == "https://example.test/v1"
assert code_client.default_headers == {"X-Test-Header": "test"}
assert code_client.dimensions == 1536
assert code_client.check_embedding_ctx_length is True
llama_provider = LlamaCppEmbeddingProvider(_embedding_config())
for embedding in (
llama_provider.get_embed_model_code(),
llama_provider.get_embed_model_docs(),
):
assert cast(Any, embedding._client).check_embedding_ctx_length is False