Skip to content

Commit 8ad77f2

Browse files
committed
--
1 parent a78391b commit 8ad77f2

File tree

8 files changed

+54
-16
lines changed

8 files changed

+54
-16
lines changed

ommlx/__about__.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,23 @@ class Project(ProjectBase):
1313
]
1414

1515
optional_dependencies = {
16+
'backends': [
17+
'llama-cpp-python ~= 0.2',
18+
19+
'openai ~= 1.47',
20+
21+
'sentence_transformers ~= 3.1',
22+
23+
'transformers ~= 4.44',
24+
],
25+
1626
'huggingface': [
1727
'huggingface-hub ~= 0.25',
1828
'datasets ~= 3.0',
1929
],
2030

21-
'llamacpp': [
22-
'llama-cpp-python ~= 0.2',
23-
],
24-
25-
'openai': [
26-
'openai ~= 1.47',
31+
'pillow': [
32+
'pillow ~= 10.4',
2733
],
2834

2935
'tinygrad': [
@@ -35,10 +41,6 @@ class Project(ProjectBase):
3541
'torch ~= 2.4',
3642
],
3743

38-
'transformers': [
39-
'transformers ~= 4.44',
40-
],
41-
4244
'wiki': [
4345
'mwparserfromhell ~= 0.6',
4446
'wikitextparser ~= 0.56', # !! GPL

ommlx/minichain/backends/openai.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from ..chat import SystemMessage
1111
from ..chat import ToolExecutionResultMessage
1212
from ..chat import UserMessage
13+
from ..content import Content
1314
from ..content import Text
1415
from ..embeddings import Embedding
1516
from ..embeddings import EmbeddingModel_
@@ -87,10 +88,10 @@ def generate(self, request: Request[ChatRequest]) -> Response[AiMessage]:
8788
class OpenaiEmbeddingModel(EmbeddingModel_):
8889
model = 'text-embedding-3-small'
8990

90-
def generate(self, request: Request[str]) -> Response[Embedding]:
91+
def generate(self, request: Request[Content]) -> Response[Embedding]:
9192
response = openai.embeddings.create(
9293
model=self.model,
93-
input=request.v,
94+
input=check.isinstance(request.v, Text).s,
9495
)
9596

9697
return Response(Embedding(response.data[0].embedding))
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import typing as ta
2+
3+
from omlish import check
4+
from omlish import lang
5+
6+
from ..content import Content
7+
from ..content import Text
8+
from ..embeddings import Embedding
9+
from ..embeddings import EmbeddingModel_
10+
from ..models import Request
11+
from ..models import Response
12+
13+
14+
if ta.TYPE_CHECKING:
15+
import PIL.Image as pimg # noqa
16+
import sentence_transformers as st
17+
else:
18+
pimg = lang.proxy_import('PIL.Image')
19+
st = lang.proxy_import('sentence_transformers')
20+
21+
22+
class SentencetransformersEmbeddingModel(EmbeddingModel_):
23+
model = 'clip-ViT-B-32'
24+
25+
def generate(self, request: Request[Content]) -> Response[Embedding]:
26+
mdl = st.SentenceTransformer(self.model)
27+
28+
response = mdl.encode(check.isinstance(request.v, Text).s)
29+
30+
return Response(Embedding(response.tolist()))

ommlx/minichain/cli/main.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from ..backends.openai import OpenaiChatModel
1515
from ..backends.openai import OpenaiEmbeddingModel
1616
from ..backends.openai import OpenaiPromptModel
17+
from ..backends.sentencetransformers import SentencetransformersEmbeddingModel
1718
from ..backends.transformers import TransformersPromptModel
1819
from ..chat import Chat
1920
from ..chat import ChatModel
@@ -139,6 +140,7 @@ def _run_prompt(
139140

140141
EMBEDDING_MODEL_BACKENDS: ta.Mapping[str, type[EmbeddingModel]] = {
141142
'openai': OpenaiEmbeddingModel,
143+
'sentencetransformers': SentencetransformersEmbeddingModel,
142144
}
143145

144146

@@ -149,7 +151,7 @@ def _run_embed(
149151
) -> None:
150152
mdl = EMBEDDING_MODEL_BACKENDS[backend or DEFAULT_BACKEND]()
151153

152-
response = mdl.generate(Request(prompt))
154+
response = mdl.generate(Request(Text(prompt)))
153155

154156
print(json.dumps_compact(response.v.v))
155157

ommlx/minichain/embeddings.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from omlish import lang
66

7+
from .content import Content
78
from .models import Model
89
from .models import Request
910
from .models import Response
@@ -19,10 +20,10 @@ class Embedding:
1920
v: ta.Sequence[float]
2021

2122

22-
EmbeddingModel: ta.TypeAlias = Model[str, Embedding]
23+
EmbeddingModel: ta.TypeAlias = Model[Content, Embedding]
2324

2425

2526
class EmbeddingModel_(EmbeddingModel, lang.Abstract): # noqa
2627
@abc.abstractmethod
27-
def generate(self, request: Request[str]) -> Response[Embedding]:
28+
def generate(self, request: Request[Content]) -> Response[Embedding]:
2829
raise NotImplementedError

ommlx/tests/__init__.py

Whitespace-only changes.

ommlx/tests/test.jpg

118 KB
Loading

requirements-ext.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ einops==0.8.0
158158

159159
### infra
160160

161-
boto3>=1.35.24
161+
boto3>=1.35.2G4
162162

163163
google-cloud-compute==1.19.2
164164

@@ -269,3 +269,5 @@ usearch==2.15.1
269269
llama-index-core==0.11.10
270270

271271
unstructured==0.15.13
272+
273+
sentence_transformers==3.1.1

0 commit comments

Comments
 (0)