|
20 | 20 | from javelin_sdk.services.secret_service import SecretService |
21 | 21 | from javelin_sdk.services.template_service import TemplateService |
22 | 22 | from javelin_sdk.services.trace_service import TraceService |
| 23 | +from javelin_sdk.services.guardrails_service import GuardrailsService |
23 | 24 | from javelin_sdk.tracing_setup import configure_span_exporter |
24 | 25 | import inspect |
25 | 26 | from opentelemetry.trace import SpanKind |
@@ -70,6 +71,9 @@ class JavelinClient: |
70 | 71 | "chat.completions.create": "chat", |
71 | 72 | "completions.create": "text_completion", |
72 | 73 | "embeddings.create": "embeddings", |
| 74 | + "images.generate": "image_generation", |
| 75 | + "images.edit": "image_editing", |
| 76 | + "images.create_variation": "image_variation", |
73 | 77 | } |
74 | 78 |
|
75 | 79 | def __init__(self, config: JavelinConfig) -> None: |
@@ -98,6 +102,7 @@ def __init__(self, config: JavelinConfig) -> None: |
98 | 102 | self.template_service = TemplateService(self) |
99 | 103 | self.trace_service = TraceService(self) |
100 | 104 | self.modelspec_service = ModelSpecService(self) |
| 105 | + self.guardrails_service = GuardrailsService(self) |
101 | 106 |
|
102 | 107 | self.chat = Chat(self) |
103 | 108 | self.completions = Completions(self) |
@@ -203,6 +208,9 @@ def register_provider( |
203 | 208 | "chat_completions_create": openai_client.chat.completions.create, |
204 | 209 | "completions_create": openai_client.completions.create, |
205 | 210 | "embeddings_create": openai_client.embeddings.create, |
| 211 | + "images_generate": openai_client.images.generate, |
| 212 | + "images_edit": openai_client.images.edit, |
| 213 | + "images_create_variation": openai_client.images.create_variation, |
206 | 214 | } |
207 | 215 |
|
208 | 216 | # Patch methods with tracing and header updates |
@@ -899,6 +907,8 @@ def _prepare_request(self, request: Request) -> tuple: |
899 | 907 | is_model_specs=request.is_model_specs, |
900 | 908 | is_reload=request.is_reload, |
901 | 909 | univ_model=request.univ_model_config, |
| 910 | + guardrail=request.guardrail, |
| 911 | + list_guardrails=request.list_guardrails, |
902 | 912 | ) |
903 | 913 | headers = {**self._headers, **(request.headers or {})} |
904 | 914 | return url, headers |
@@ -939,6 +949,8 @@ def _construct_url( |
939 | 949 | is_model_specs: bool = False, |
940 | 950 | is_reload: bool = False, |
941 | 951 | univ_model: Optional[Dict[str, Any]] = None, |
| 952 | + guardrail: Optional[str] = None, |
| 953 | + list_guardrails: bool = False, |
942 | 954 | ) -> str: |
943 | 955 | url_parts = [self.base_url] |
944 | 956 |
|
@@ -993,6 +1005,13 @@ def _construct_url( |
993 | 1005 | url_parts.extend(["admin", "archives"]) |
994 | 1006 | if archive != "###": |
995 | 1007 | url_parts.append(archive) |
| 1008 | + elif guardrail: |
| 1009 | + if guardrail == "all": |
| 1010 | + url_parts.extend(["guardrails", "apply"]) |
| 1011 | + else: |
| 1012 | + url_parts.extend(["guardrail", guardrail, "apply"]) |
| 1013 | + elif list_guardrails: |
| 1014 | + url_parts.extend(["guardrails", "list"]) |
996 | 1015 | else: |
997 | 1016 | url_parts.extend(["admin", "routes"]) |
998 | 1017 |
|
@@ -1201,6 +1220,12 @@ def _construct_url( |
1201 | 1220 | ) |
1202 | 1221 | ) |
1203 | 1222 |
|
| 1223 | + # Guardrails methods |
| 1224 | + apply_trustsafety = lambda self, text, config=None: self.guardrails_service.apply_trustsafety(text, config) |
| 1225 | + apply_promptinjectiondetection = lambda self, text, config=None: self.guardrails_service.apply_promptinjectiondetection(text, config) |
| 1226 | + apply_guardrails = lambda self, text, guardrails: self.guardrails_service.apply_guardrails(text, guardrails) |
| 1227 | + list_guardrails = lambda self: self.guardrails_service.list_guardrails() |
| 1228 | + |
1204 | 1229 | ## Traces methods |
1205 | 1230 | get_traces = lambda self: self.trace_service.get_traces() |
1206 | 1231 | aget_traces = lambda self: self.trace_service.aget_traces() |
@@ -1286,3 +1311,9 @@ def set_headers(self, headers: Dict[str, str]) -> None: |
1286 | 1311 | headers (Dict[str, str]): A dictionary of headers to set or update. |
1287 | 1312 | """ |
1288 | 1313 | self._headers.update(headers) |
| 1314 | + |
| 1315 | + # Guardrails methods |
| 1316 | + apply_trustsafety = lambda self, text, config=None: self.guardrails_service.apply_trustsafety(text, config) |
| 1317 | + apply_promptinjectiondetection = lambda self, text, config=None: self.guardrails_service.apply_promptinjectiondetection(text, config) |
| 1318 | + apply_guardrails = lambda self, text, guardrails: self.guardrails_service.apply_guardrails(text, guardrails) |
| 1319 | + list_guardrails = lambda self: self.guardrails_service.list_guardrails() |
0 commit comments