From 8872f1cc452fddf3ff7a1d66d794a3a3064435fa Mon Sep 17 00:00:00 2001 From: Damien BUTY Date: Fri, 6 Sep 2024 17:23:41 +0200 Subject: [PATCH 1/3] feat(prompt): add url to get_prompt --- examples/prompt.py | 19 ++----------------- literalai/api/gql.py | 1 + literalai/prompt_engineering/prompt.py | 4 ++++ 3 files changed, 7 insertions(+), 17 deletions(-) diff --git a/examples/prompt.py b/examples/prompt.py index 7ac8e8c..8d29e87 100644 --- a/examples/prompt.py +++ b/examples/prompt.py @@ -1,26 +1,11 @@ from dotenv import load_dotenv -from openai import OpenAI from literalai import LiteralClient load_dotenv() -openai = OpenAI() - client = LiteralClient() -client.instrument_openai() - -prompt = client.api.create_prompt( - name="hello", - template_messages=[{"role": "user", "content": "Hello, how are you {{name}}?"}], -) -messages = prompt.format_messages(name="Alice") - - -res = openai.chat.completions.create( - model="gpt-3.5-turbo", - messages=messages, -) +prompt = client.api.get_prompt(name="Default", version=0) -print(res) +print(prompt) diff --git a/literalai/api/gql.py b/literalai/api/gql.py index 2058ae4..7ad4713 100644 --- a/literalai/api/gql.py +++ b/literalai/api/gql.py @@ -1034,6 +1034,7 @@ variables variablesDefaultValues version + url lineage { name } diff --git a/literalai/prompt_engineering/prompt.py b/literalai/prompt_engineering/prompt.py index 19e3933..1527d1b 100644 --- a/literalai/prompt_engineering/prompt.py +++ b/literalai/prompt_engineering/prompt.py @@ -49,6 +49,7 @@ class PromptDict(TypedDict, total=False): type: "GenerationType" name: str version: int + url: str versionDesc: Optional[str] templateMessages: List["GenerationMessage"] tools: Optional[List[Dict]] @@ -67,6 +68,7 @@ class Prompt(Utils): type: "GenerationType" name: str version: int + url: str version_desc: Optional[str] template_messages: List["GenerationMessage"] tools: Optional[List[Dict]] @@ -84,6 +86,7 @@ def to_dict(self) -> PromptDict: "type": self.type, "name": self.name, "version": self.version, + "url": self.url, "versionDesc": self.version_desc, "templateMessages": self.template_messages, # Assuming this is a list of dicts or similar serializable objects "tools": self.tools, @@ -104,6 +107,7 @@ def from_dict(cls, api: "LiteralAPI", prompt_dict: PromptDict) -> "Prompt": id=prompt_dict.get("id", ""), name=prompt_dict.get("lineage", {}).get("name", ""), version=prompt_dict.get("version", 0), + url=prompt_dict.get("url", ""), created_at=prompt_dict.get("createdAt", ""), updated_at=prompt_dict.get("updatedAt", ""), type=prompt_dict.get("type", GenerationType.CHAT), From 54ab67cd2c954a502644d444e8eb019b75cf0261 Mon Sep 17 00:00:00 2001 From: Damien BUTY Date: Fri, 6 Sep 2024 17:26:43 +0200 Subject: [PATCH 2/3] fix: tests --- tests/e2e/test_e2e.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/e2e/test_e2e.py b/tests/e2e/test_e2e.py index 1137878..68ce13a 100644 --- a/tests/e2e/test_e2e.py +++ b/tests/e2e/test_e2e.py @@ -594,10 +594,13 @@ async def test_dataset_sync( @pytest.mark.timeout(5) async def test_prompt(self, async_client: AsyncLiteralClient): prompt = await async_client.api.get_prompt(name="Default", version=0) + project = await async_client.api.get_my_project_id() + assert prompt is not None assert prompt.name == "Default" assert prompt.version == 0 assert prompt.provider == "openai" + assert f"projects/{project.id}/playground?name=Default&version=0" prompt = await async_client.api.get_prompt(id=prompt.id, version=0) assert prompt is not None From 257a7f6cf27332808bdf4e67afa339dbf800ee50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Sirieix?= Date: Wed, 11 Sep 2024 10:18:49 +0200 Subject: [PATCH 3/3] fix: fix test --- tests/e2e/test_e2e.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/test_e2e.py b/tests/e2e/test_e2e.py index 68ce13a..c858ae6 100644 --- a/tests/e2e/test_e2e.py +++ b/tests/e2e/test_e2e.py @@ -600,7 +600,7 @@ async def test_prompt(self, async_client: AsyncLiteralClient): assert prompt.name == "Default" assert prompt.version == 0 assert prompt.provider == "openai" - assert f"projects/{project.id}/playground?name=Default&version=0" + assert prompt.url.endswith(f"projects/{project}/playground?name=Default&version=0") prompt = await async_client.api.get_prompt(id=prompt.id, version=0) assert prompt is not None