mirror of
https://github.com/NicolasBohn/NexQuant.git
synced 2026-07-27 23:47:46 +00:00
5090c6153f
* File structure for supporting litellm * more litellm support * feat: Add CachedAPIBackend class and dynamic API backend retrieval function * fix: update benchmark folder path and add default values for architecture and hyperparameters * feat: add LiteLLMAPIBackend and DeprecBackend ; changed structure of the project ; with bus * fix : deprec_backend * feat: Add LiteLLMAPIBackend class and related features; update configuration and test cases. * feat: Enhance LiteLLMAPIBackend with encoder support and dynamic argument handling;Enhance log Colors * lint * fix lint... * fix: Lint * fix:make auto-lint * fix:test oai * fix:redundant _abckend.py * fix: Optimize LiteLLMAPIBackend on token counting functiona, and clean up unused code;add test on this function * feat: Add LiteLLMSettings class and update model settings usage * fix: Update LiteLLMSettings environment variable prefix and model configurations * fix : gitignore * test: Consolidate and relocate test files for litellm backend and oai * fix : lint * fix: lint * auto lint * lint * LINT * lint * chore: remove deprecated backend configuration comments * refactor: Remove unused functions and imports from deprec.py and llm_utils.py * refactor: Move md5_hash function from deprec.py to llm_utils.py * chore: Remove extra newline and add missing import in deprec.py * lint * refactor: Move md5_hash function to utils module * lint * lint * lint --------- Co-authored-by: Young <afe.young@gmail.com> Co-authored-by: Yihua Chen <v-yihuachen@microsoft.com>
45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any, Type
|
|
|
|
import numpy as np
|
|
|
|
from rdagent.core.utils import import_class
|
|
from rdagent.oai.backend.base import APIBackend as BaseAPIBackend
|
|
from rdagent.oai.llm_conf import LLM_SETTINGS
|
|
from rdagent.utils import md5_hash # for compatible with previous import
|
|
|
|
|
|
def calculate_embedding_distance_between_str_list(
|
|
source_str_list: list[str],
|
|
target_str_list: list[str],
|
|
) -> list[list[float]]:
|
|
if not source_str_list or not target_str_list:
|
|
return [[]]
|
|
|
|
embeddings = APIBackend().create_embedding(source_str_list + target_str_list)
|
|
|
|
source_embeddings = embeddings[: len(source_str_list)]
|
|
target_embeddings = embeddings[len(source_str_list) :]
|
|
|
|
source_embeddings_np = np.array(source_embeddings)
|
|
target_embeddings_np = np.array(target_embeddings)
|
|
|
|
source_embeddings_np = source_embeddings_np / np.linalg.norm(source_embeddings_np, axis=1, keepdims=True)
|
|
target_embeddings_np = target_embeddings_np / np.linalg.norm(target_embeddings_np, axis=1, keepdims=True)
|
|
similarity_matrix = np.dot(source_embeddings_np, target_embeddings_np.T)
|
|
|
|
return similarity_matrix.tolist() # type: ignore[no-any-return]
|
|
|
|
|
|
def get_api_backend(*args: Any, **kwargs: Any) -> BaseAPIBackend: # TODO: import it from base.py
|
|
"""
|
|
get llm api backend based on settings dynamically.
|
|
"""
|
|
api_backend_cls: Type[BaseAPIBackend] = import_class(LLM_SETTINGS.backend)
|
|
return api_backend_cls(*args, **kwargs)
|
|
|
|
|
|
# Alias
|
|
APIBackend = get_api_backend
|