Skip to content

Commit a5a7b4b

Browse files
sararobcopybara-github
authored andcommitted
feat: move create prompt and prompt version workflow to prompts.create method, change prompts.get_version to return prompt version contents in prompt.prompt_data, and prompts.update method
PiperOrigin-RevId: 826031169
1 parent ed76c44 commit a5a7b4b

File tree

5 files changed

+345
-169
lines changed

5 files changed

+345
-169
lines changed

tests/unit/vertexai/genai/replays/test_create_prompt.py

Lines changed: 40 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -145,15 +145,19 @@ def test_create(client):
145145
)
146146
assert isinstance(prompt_resource, types.Prompt)
147147
assert isinstance(prompt_resource.dataset, types.Dataset)
148+
assert isinstance(prompt_resource.dataset_version, types.DatasetVersion)
149+
assert prompt_resource.version_id == "1"
150+
assert (
151+
prompt_resource.dataset_version.metadata.prompt_api_schema.multimodal_prompt
152+
== prompt_resource.dataset.metadata.prompt_api_schema.multimodal_prompt
153+
)
148154

149155

150156
def test_create_e2e(client):
151157
prompt_resource = client.prompts.create(
152158
prompt=TEST_PROMPT,
153159
config=TEST_CREATE_PROMPT_CONFIG,
154160
)
155-
assert isinstance(prompt_resource, types.Prompt)
156-
assert isinstance(prompt_resource.dataset, types.Dataset)
157161

158162
# Test local prompt resource is the same after calling get()
159163
retrieved_prompt = client.prompts.get(prompt_id=prompt_resource.prompt_id)
@@ -186,28 +190,28 @@ def test_create_e2e(client):
186190
# Test calling create_version on the same prompt dataset and change the prompt
187191
new_prompt = TEST_PROMPT.model_copy(deep=True)
188192
new_prompt.prompt_data.contents[0].parts[0].text = "Is this Alice?"
189-
prompt_resource_2 = client.prompts.create_version(
193+
updated_prompt = client.prompts.update(
190194
prompt_id=prompt_resource.prompt_id,
191195
prompt=new_prompt,
192-
config=types.CreatePromptVersionConfig(
193-
version_display_name="my_version",
196+
config=types.UpdatePromptConfig(
197+
prompt_display_name="updated_prompt_display_name",
198+
version_display_name="my_version_2",
194199
),
195200
)
196-
assert prompt_resource_2.dataset.name == prompt_resource.dataset.name
197-
assert prompt_resource_2.prompt_data.contents[0].parts[0].text == "Is this Alice?"
201+
assert updated_prompt.dataset.display_name == "updated_prompt_display_name"
202+
assert updated_prompt.dataset_version.display_name == "my_version_2"
203+
assert updated_prompt.version_id == "2"
204+
assert updated_prompt.prompt_data.contents[0].parts[0].text == "Is this Alice?"
198205

199-
# Update the prompt contents again and verify version history is preserved
200-
prompt_v3 = TEST_PROMPT.model_copy(deep=True)
201-
prompt_v3.prompt_data.contents[0].parts[0].text = "Is this Bob?"
202-
prompt_resource_3 = client.prompts.create_version(
206+
# Calling get_version on version "1" should return the original prompt contents
207+
original_prompt = client.prompts.get_version(
203208
prompt_id=prompt_resource.prompt_id,
204-
prompt=prompt_v3,
205-
config=types.CreatePromptVersionConfig(
206-
version_display_name="my_version_2",
207-
),
209+
version_id="1",
210+
)
211+
assert (
212+
original_prompt.prompt_data.contents[0].parts[0].text
213+
== "Hello, {name}! How are you?"
208214
)
209-
assert prompt_resource_3.dataset.name == prompt_resource.dataset.name
210-
assert prompt_resource_3.prompt_data.contents[0].parts[0].text == "Is this Bob?"
211215

212216

213217
def test_create_version(client):
@@ -296,6 +300,7 @@ def test_create_with_encryption_spec(client):
296300
config = types.CreatePromptConfig(
297301
prompt_display_name="my_prompt_with_encryption_spec",
298302
encryption_spec=encryption_spec,
303+
version_display_name="my_version_with_encryption_spec",
299304
)
300305
prompt_resource = client.prompts.create(
301306
prompt=TEST_PROMPT,
@@ -304,19 +309,19 @@ def test_create_with_encryption_spec(client):
304309
assert isinstance(prompt_resource, types.Prompt)
305310
assert isinstance(prompt_resource.dataset, types.Dataset)
306311

307-
# Create a version on a prompt with an encryption spec.
312+
# Update a prompt with an encryption spec.
308313
new_prompt = TEST_PROMPT.model_copy(deep=True)
309314
new_prompt.prompt_data.contents[0].parts[0].text = "Is this Alice?"
310-
prompt_version_resource = client.prompts.create_version(
315+
updated_prompt_resource = client.prompts.update(
311316
prompt_id=prompt_resource.prompt_id,
312317
prompt=new_prompt,
313-
config=types.CreatePromptVersionConfig(
318+
config=types.UpdatePromptConfig(
314319
version_display_name="my_version_existing_dataset",
315320
),
316321
)
317-
assert isinstance(prompt_version_resource, types.Prompt)
318-
assert isinstance(prompt_version_resource.dataset, types.Dataset)
319-
assert isinstance(prompt_version_resource.dataset_version, types.DatasetVersion)
322+
assert isinstance(updated_prompt_resource, types.Prompt)
323+
assert isinstance(updated_prompt_resource.dataset, types.Dataset)
324+
assert isinstance(updated_prompt_resource.dataset_version, types.DatasetVersion)
320325

321326

322327
pytestmark = pytest_helper.setup(
@@ -329,35 +334,29 @@ def test_create_with_encryption_spec(client):
329334

330335

331336
@pytest.mark.asyncio
332-
async def test_create_async(client):
337+
async def test_create_async_e2e(client):
333338
prompt_resource = await client.aio.prompts.create(
334339
prompt=TEST_PROMPT.model_dump(),
335340
config=TEST_CREATE_PROMPT_CONFIG.model_dump(),
336341
)
337342
assert isinstance(prompt_resource, types.Prompt)
338343
assert isinstance(prompt_resource.dataset, types.Dataset)
339-
340-
341-
@pytest.mark.asyncio
342-
async def test_create_version_async(client):
343-
prompt_resource = await client.aio.prompts.create(
344-
prompt=TEST_PROMPT.model_dump(),
345-
config=TEST_CREATE_PROMPT_CONFIG.model_dump(),
344+
assert isinstance(prompt_resource.dataset_version, types.DatasetVersion)
345+
assert prompt_resource.version_id == "1"
346+
assert (
347+
prompt_resource.dataset.metadata.prompt_api_schema.multimodal_prompt.prompt_message
348+
== prompt_resource.dataset_version.metadata.prompt_api_schema.multimodal_prompt.prompt_message
346349
)
350+
347351
new_prompt = TEST_PROMPT.model_copy(deep=True)
348352
new_prompt.prompt_data.contents[0].parts[0].text = "Is this Alice?"
349-
prompt_version_resource = await client.aio.prompts.create_version(
353+
updated_prompt_resource = await client.aio.prompts.update(
350354
prompt_id=prompt_resource.prompt_id,
351355
prompt=new_prompt,
352-
config=types.CreatePromptVersionConfig(
356+
config=types.UpdatePromptConfig(
353357
version_display_name="my_version_existing_dataset",
354358
),
355359
)
356-
assert isinstance(prompt_version_resource, types.Prompt)
357-
assert isinstance(prompt_version_resource.dataset, types.Dataset)
358-
assert isinstance(prompt_version_resource.dataset_version, types.DatasetVersion)
359-
assert prompt_version_resource.dataset.name.endswith(prompt_resource.prompt_id)
360-
assert (
361-
prompt_version_resource.prompt_data.contents[0].parts[0].text
362-
== "Is this Alice?"
363-
)
360+
assert isinstance(updated_prompt_resource, types.Prompt)
361+
assert isinstance(updated_prompt_resource.dataset, types.Dataset)
362+
assert isinstance(updated_prompt_resource.dataset_version, types.DatasetVersion)

tests/unit/vertexai/genai/replays/test_get_prompt_resource.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,7 @@ def test_get_prompt_version(client):
5151
version_id=TEST_PROMPT_VERSION_ID,
5252
)
5353
assert isinstance(prompt, types.Prompt)
54-
assert isinstance(prompt.dataset, types.Dataset)
5554
assert isinstance(prompt.dataset_version, types.DatasetVersion)
56-
assert prompt.dataset.name.endswith(TEST_PROMPT_DATASET_ID)
5755
assert prompt.dataset_version.name.endswith(TEST_PROMPT_VERSION_ID)
5856

5957

@@ -100,10 +98,8 @@ async def test_get_prompt_version_async(client):
10098
prompt_id=TEST_PROMPT_DATASET_ID, version_id=TEST_PROMPT_VERSION_ID
10199
)
102100
assert isinstance(prompt, types.Prompt)
103-
assert isinstance(prompt.dataset, types.Dataset)
104-
assert prompt.dataset.name.endswith(TEST_PROMPT_DATASET_ID)
105101
assert (
106102
prompt.prompt_data
107-
== prompt.dataset.metadata.prompt_api_schema.multimodal_prompt.prompt_message
103+
== prompt.dataset_version.metadata.prompt_api_schema.multimodal_prompt.prompt_message
108104
)
109105
assert isinstance(prompt.prompt_data, types.SchemaPromptSpecPromptMessage)

0 commit comments

Comments
 (0)