Skip to content

Commit 21225cf

Browse files
committed
Make it easier to use the base data models and fix the deployment example
1 parent ecfdba1 commit 21225cf

File tree

5 files changed

+178
-24
lines changed

5 files changed

+178
-24
lines changed

docs/Deployment/Building a REST API.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ async def chat_completion(messages: synalinks.ChatMessages):
9393
try:
9494
result = await program(messages)
9595
if result:
96-
logger.info(result.pretty_json())
96+
logger.info(result.prettify_json())
9797
return result.get_json()
9898
else:
9999
return None

synalinks/__init__.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,28 @@
33
from synalinks.api import And
44
from synalinks.api import Branch
55
from synalinks.api import ChainOfThought
6+
from synalinks.api import ChatMessage
7+
from synalinks.api import ChatMessages
8+
from synalinks.api import ChatRole
69
from synalinks.api import Concat
710
from synalinks.api import DataModel
811
from synalinks.api import Decision
12+
from synalinks.api import Edge
13+
from synalinks.api import Embedding
914
from synalinks.api import EmbeddingModel
15+
from synalinks.api import Embeddings
16+
from synalinks.api import Entities
17+
from synalinks.api import Entity
1018
from synalinks.api import Function
1119
from synalinks.api import Generator
20+
from synalinks.api import GenericInputs
21+
from synalinks.api import GenericIO
22+
from synalinks.api import GenericOutputs
1223
from synalinks.api import Initializer
1324
from synalinks.api import Input
1425
from synalinks.api import JsonDataModel
26+
from synalinks.api import KnowledgeGraph
27+
from synalinks.api import KnowledgeGraphs
1528
from synalinks.api import LanguageModel
1629
from synalinks.api import Metric
1730
from synalinks.api import Module
@@ -32,6 +45,15 @@
3245
from synalinks.api import default_prompt_template
3346
from synalinks.api import embedding_models
3447
from synalinks.api import initializers
48+
from synalinks.api import is_chat_message
49+
from synalinks.api import is_chat_messages
50+
from synalinks.api import is_edge
51+
from synalinks.api import is_embedding
52+
from synalinks.api import is_embeddings
53+
from synalinks.api import is_entities
54+
from synalinks.api import is_entity
55+
from synalinks.api import is_knowledge_graph
56+
from synalinks.api import is_knowledge_graphs
3557
from synalinks.api import language_models
3658
from synalinks.api import metrics
3759
from synalinks.api import modules

synalinks/api/__init__.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,28 @@
2626
from synalinks.src.backend.common.stateless_scope import StatelessScope
2727
from synalinks.src.backend.common.symbolic_data_model import SymbolicDataModel
2828
from synalinks.src.backend.common.symbolic_scope import SymbolicScope
29+
from synalinks.src.backend.pydantic.base import ChatMessage
30+
from synalinks.src.backend.pydantic.base import ChatMessages
31+
from synalinks.src.backend.pydantic.base import ChatRole
32+
from synalinks.src.backend.pydantic.base import Edge
33+
from synalinks.src.backend.pydantic.base import Embedding
34+
from synalinks.src.backend.pydantic.base import Embeddings
35+
from synalinks.src.backend.pydantic.base import Entities
36+
from synalinks.src.backend.pydantic.base import Entity
37+
from synalinks.src.backend.pydantic.base import GenericInputs
38+
from synalinks.src.backend.pydantic.base import GenericIO
39+
from synalinks.src.backend.pydantic.base import GenericOutputs
40+
from synalinks.src.backend.pydantic.base import KnowledgeGraph
41+
from synalinks.src.backend.pydantic.base import KnowledgeGraphs
42+
from synalinks.src.backend.pydantic.base import is_chat_message
43+
from synalinks.src.backend.pydantic.base import is_chat_messages
44+
from synalinks.src.backend.pydantic.base import is_edge
45+
from synalinks.src.backend.pydantic.base import is_embedding
46+
from synalinks.src.backend.pydantic.base import is_embeddings
47+
from synalinks.src.backend.pydantic.base import is_entities
48+
from synalinks.src.backend.pydantic.base import is_entity
49+
from synalinks.src.backend.pydantic.base import is_knowledge_graph
50+
from synalinks.src.backend.pydantic.base import is_knowledge_graphs
2951
from synalinks.src.embedding_models.embedding_model import EmbeddingModel
3052
from synalinks.src.initializers.initializer import Initializer
3153
from synalinks.src.language_models.language_model import LanguageModel

synalinks/src/backend/pydantic/base.py

Lines changed: 132 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,29 +23,49 @@
2323
from synalinks.src.backend.pydantic.core import DataModel
2424

2525

26-
@synalinks_export("synalinks.backend.GenericOutputs")
26+
@synalinks_export(
27+
[
28+
"synalinks.backend.GenericOutputs",
29+
"synalinks.GenericOutputs",
30+
]
31+
)
2732
class GenericOutputs(DataModel):
2833
"""A generic outputs"""
2934

3035
outputs: Dict[str, Any]
3136

3237

33-
@synalinks_export("synalinks.backend.GenericInputs")
38+
@synalinks_export(
39+
[
40+
"synalinks.backend.GenericInputs",
41+
"synalinks.GenericInputs",
42+
]
43+
)
3444
class GenericInputs(DataModel):
3545
"""A generic inputs"""
3646

3747
inputs: Dict[str, Any]
3848

3949

40-
@synalinks_export("synalinks.backend.GenericIO")
50+
@synalinks_export(
51+
[
52+
"synalinks.backend.GenericIO",
53+
"synalinks.GenericIO",
54+
]
55+
)
4156
class GenericIO(DataModel):
4257
"""A pair of generic inputs/outputs"""
4358

4459
inputs: Dict[str, Any]
4560
outputs: Dict[str, Any]
4661

4762

48-
@synalinks_export("synalinks.backend.ChatRole")
63+
@synalinks_export(
64+
[
65+
"synalinks.backend.ChatRole",
66+
"synalinks.ChatRole",
67+
]
68+
)
4969
class ChatRole(str, Enum):
5070
"""The chat message roles"""
5171

@@ -54,15 +74,25 @@ class ChatRole(str, Enum):
5474
ASSISTANT = "assistant"
5575

5676

57-
@synalinks_export("synalinks.backend.ChatMessage")
77+
@synalinks_export(
78+
[
79+
"synalinks.backend.ChatMessage",
80+
"synalinks.ChatMessage",
81+
]
82+
)
5883
class ChatMessage(DataModel):
5984
"""A chat message"""
6085

6186
role: ChatRole
6287
content: str
6388

6489

65-
@synalinks_export("synalinks.backend.is_chat_message")
90+
@synalinks_export(
91+
[
92+
"synalinks.backend.is_chat_message",
93+
"synalinks.is_chat_message",
94+
]
95+
)
6696
def is_chat_message(x):
6797
"""Checks if the given data model is a chat message
6898
@@ -78,14 +108,24 @@ def is_chat_message(x):
78108
return False
79109

80110

81-
@synalinks_export("synalinks.backend.ChatMessages")
111+
@synalinks_export(
112+
[
113+
"synalinks.backend.ChatMessages",
114+
"synalinks.ChatMessages",
115+
]
116+
)
82117
class ChatMessages(DataModel):
83118
"""A list of chat messages"""
84119

85120
messages: List[ChatMessage] = []
86121

87122

88-
@synalinks_export("synalinks.backend.is_chat_messages")
123+
@synalinks_export(
124+
[
125+
"synalinks.backend.is_chat_messages",
126+
"synalinks.is_chat_messages",
127+
]
128+
)
89129
def is_chat_messages(x):
90130
"""Checks if the given data model are chat messages
91131
@@ -101,14 +141,24 @@ def is_chat_messages(x):
101141
return False
102142

103143

104-
@synalinks_export("synalinks.backend.Embedding")
144+
@synalinks_export(
145+
[
146+
"synalinks.backend.Embedding",
147+
"synalinks.Embedding",
148+
]
149+
)
105150
class Embedding(DataModel):
106151
"""An embedding vector"""
107152

108153
embedding: List[float] = []
109154

110155

111-
@synalinks_export("synalinks.backend.is_embedding")
156+
@synalinks_export(
157+
[
158+
"synalinks.backend.is_embedding",
159+
"synalinks.is_embedding",
160+
]
161+
)
112162
def is_embedding(x):
113163
"""Checks if the given data model is an embedding
114164
@@ -124,14 +174,24 @@ def is_embedding(x):
124174
return False
125175

126176

127-
@synalinks_export("synalinks.backend.Embeddings")
177+
@synalinks_export(
178+
[
179+
"synalinks.backend.Embeddings",
180+
"synalinks.Embeddings",
181+
]
182+
)
128183
class Embeddings(DataModel):
129184
"""A list of embeddings"""
130185

131186
embeddings: List[List[float]] = []
132187

133188

134-
@synalinks_export("synalinks.backend.is_embeddings")
189+
@synalinks_export(
190+
[
191+
"synalinks.backend.is_embeddings",
192+
"synalinks.is_embeddings",
193+
]
194+
)
135195
def is_embeddings(x):
136196
"""Checks if the given data model are embeddings
137197
@@ -184,14 +244,24 @@ class Stamp(DataModel):
184244
created_at: datetime = datetime.now()
185245

186246

187-
@synalinks_export("synalinks.backend.Entity")
247+
@synalinks_export(
248+
[
249+
"synalinks.backend.Entity",
250+
"synalinks.Entity",
251+
]
252+
)
188253
class Entity(Unique, Embedding, Label, Stamp):
189254
"""An entity data model"""
190255

191256
pass
192257

193258

194-
@synalinks_export("synalinks.backend.is_entity")
259+
@synalinks_export(
260+
[
261+
"synalinks.backend.is_entity",
262+
"synalinks.is_entity",
263+
]
264+
)
195265
def is_entity(x):
196266
"""Checks if the given data model is an entity
197267
@@ -207,14 +277,24 @@ def is_entity(x):
207277
return False
208278

209279

210-
@synalinks_export("synalinks.backend.Entities")
280+
@synalinks_export(
281+
[
282+
"synalinks.backend.Entities",
283+
"synalinks.Entities",
284+
]
285+
)
211286
class Entities(DataModel):
212287
"""A list of entities"""
213288

214289
entities: List[Entity] = []
215290

216291

217-
@synalinks_export("synalinks.backend.is_entities")
292+
@synalinks_export(
293+
[
294+
"synalinks.backend.is_entities",
295+
"synalinks.is_entities",
296+
]
297+
)
218298
def is_entities(x):
219299
"""Checks if the given data model are entities
220300
@@ -230,15 +310,25 @@ def is_entities(x):
230310
return False
231311

232312

233-
@synalinks_export("synalinks.backend.Edge")
313+
@synalinks_export(
314+
[
315+
"synalinks.backend.Edge",
316+
"synalinks.Edge",
317+
]
318+
)
234319
class Edge(Entity, Weight):
235320
"""An edge entity"""
236321

237322
source: str
238323
target: str
239324

240325

241-
@synalinks_export("synalinks.backend.is_edge")
326+
@synalinks_export(
327+
[
328+
"synalinks.backend.is_edge",
329+
"synalinks.is_edge",
330+
]
331+
)
242332
def is_edge(x):
243333
"""Checks if the given data model is an edge
244334
@@ -254,15 +344,25 @@ def is_edge(x):
254344
return False
255345

256346

257-
@synalinks_export("synalinks.backend.KnowledgeGraph")
347+
@synalinks_export(
348+
[
349+
"synalinks.backend.KnowledgeGraph",
350+
"synalinks.KnowledgeGraph",
351+
]
352+
)
258353
class KnowledgeGraph(DataModel):
259354
"""A knowledge graph data model"""
260355

261356
nodes: List[Entity] = []
262357
edges: List[Edge] = []
263358

264359

265-
@synalinks_export("synalinks.backend.is_knowledge_graph")
360+
@synalinks_export(
361+
[
362+
"synalinks.backend.is_knowledge_graph",
363+
"synalinks.is_knowledge_graph",
364+
]
365+
)
266366
def is_knowledge_graph(x):
267367
"""Checks if the given data model is a knowledge graph
268368
@@ -278,14 +378,24 @@ def is_knowledge_graph(x):
278378
return False
279379

280380

281-
@synalinks_export("synalinks.backend.KnowledgeGraphs")
381+
@synalinks_export(
382+
[
383+
"synalinks.backend.KnowledgeGraphs",
384+
"synalinks.KnowledgeGraphs",
385+
]
386+
)
282387
class KnowledgeGraphs(DataModel):
283388
"""A list of knowledge graphs"""
284389

285390
knowledge_graphs: List[KnowledgeGraph] = []
286391

287392

288-
@synalinks_export("synalinks.backend.is_knowledge_graphs")
393+
@synalinks_export(
394+
[
395+
"synalinks.backend.is_knowledge_graphs",
396+
"synalinks.is_knowledge_graphs",
397+
]
398+
)
289399
def is_knowledge_graphs(x):
290400
"""Checks if the given data model are knowledge graphs
291401

synalinks/src/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from synalinks.src.api_export import synalinks_export
44

55
# Unique source of truth for the version number.
6-
__version__ = "0.2.002"
6+
__version__ = "0.2.003"
77

88

99
@synalinks_export("synalinks.version")

0 commit comments

Comments
 (0)