feat: add skill learning runtime
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any, Protocol
|
||||
|
||||
from skills_learning.config import SkillAuthoringConfig, load_config
|
||||
|
||||
|
||||
class EmbeddingClient(Protocol):
|
||||
def embed(self, text: str, *, model: str) -> list[float]:
|
||||
...
|
||||
|
||||
|
||||
class OpenAIEmbeddingClient:
|
||||
def __init__(self, *, transport: Any | None = None) -> None:
|
||||
self._transport = transport
|
||||
|
||||
def embed(self, text: str, *, model: str) -> list[float]:
|
||||
client = self._client()
|
||||
response = client.embeddings.create(model=model, input=text)
|
||||
return [float(value) for value in response.data[0].embedding]
|
||||
|
||||
def _client(self) -> Any:
|
||||
if self._transport is not None:
|
||||
return self._transport
|
||||
from openai import OpenAI
|
||||
|
||||
self._transport = OpenAI()
|
||||
return self._transport
|
||||
|
||||
|
||||
def embed_skill_text(
|
||||
text: str,
|
||||
*,
|
||||
client: EmbeddingClient | None = None,
|
||||
config: SkillAuthoringConfig | None = None,
|
||||
) -> list[float] | None:
|
||||
settings = config or load_config()
|
||||
if not settings.enabled:
|
||||
return None
|
||||
try:
|
||||
embedding_client = client or OpenAIEmbeddingClient()
|
||||
return embedding_client.embed(text, model=settings.embedding_model)
|
||||
except Exception:
|
||||
return None
|
||||
Reference in New Issue
Block a user