Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion langfuse/_client/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -2974,7 +2974,7 @@ def update_prompt(

"""
updated_prompt = self.api.prompt_version.update(
name=name,
name=self._url_encode(name),
version=version,
new_labels=new_labels,
)
Expand Down
34 changes: 34 additions & 0 deletions tests/test_prompt.py
Original file line number Diff line number Diff line change
Expand Up @@ -1410,3 +1410,37 @@ def test_update_prompt():
expected_labels = sorted(["latest", "doe", "production", "john"])
assert sorted(fetched_prompt.labels) == expected_labels
assert sorted(updated_prompt.labels) == expected_labels


def test_update_prompt_in_folder():
langfuse = Langfuse()
prompt_name = f"some-folder/{create_uuid()}"

# Create initial prompt
langfuse.create_prompt(
name=prompt_name,
prompt="test prompt",
labels=["production"],
)

old_prompt_obj = langfuse.get_prompt(prompt_name)

updated_prompt = langfuse.update_prompt(
name=old_prompt_obj.name,
version=old_prompt_obj.version,
new_labels=["john", "doe"],
)

# Fetch prompt after update (should be invalidated)
fetched_prompt = langfuse.get_prompt(prompt_name)

# Verify the fetched prompt matches the updated values
assert fetched_prompt.name == prompt_name
assert fetched_prompt.version == 1
print(f"Fetched prompt labels: {fetched_prompt.labels}")
print(f"Updated prompt labels: {updated_prompt.labels}")

# production was set by the first call, latest is managed and set by Langfuse
expected_labels = sorted(["latest", "doe", "production", "john"])
assert sorted(fetched_prompt.labels) == expected_labels
assert sorted(updated_prompt.labels) == expected_labels
Loading