Prompts Client¶
The Prompts client provides methods for managing prompts in the Opik platform.
- class opik.rest_api.prompts.client.PromptsClient(*, client_wrapper: SyncClientWrapper)¶
Bases:
object- get_prompts(*, page: int | None = None, size: int | None = None, name: str | None = None, project_id: str | None = None, sorting: str | None = None, filters: str | None = None, request_options: RequestOptions | None = None) PromptPagePublic¶
Get prompts
- Parameters:
page (Optional[int])
size (Optional[int])
name (Optional[str])
project_id (Optional[str])
sorting (Optional[str])
filters (Optional[str])
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Returns:
OK
- Return type:
- create_prompt(*, name: str, id: str | None = OMIT, project_id: str | None = OMIT, project_name: str | None = OMIT, description: str | None = OMIT, template: str | None = OMIT, metadata: Dict[str, Any | None] | None = OMIT, change_description: str | None = OMIT, type: Literal['mustache', 'jinja2', 'python'] | Any | None = OMIT, template_structure: Literal['text', 'chat'] | Any | None = OMIT, tags: Sequence[str] | None = OMIT, request_options: RequestOptions | None = None) None¶
Create prompt
- Parameters:
name (str)
id (Optional[str])
project_id (Optional[str]) – Project ID. Takes precedence over project_name when both are provided.
project_name (Optional[str]) – For project scope, specify either project_id or project_name. If project_name is provided and the project does not exist, it will be created. Ignored when project_id is provided. If neither is provided, the prompt is created at workspace level.
description (Optional[str])
template (Optional[str])
metadata (Optional[JsonNodeWrite])
change_description (Optional[str])
type (Optional[PromptWriteType])
template_structure (Optional[PromptWriteTemplateStructure]) – Template structure type: ‘text’ or ‘chat’. Immutable after creation.
tags (Optional[Sequence[str]])
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Return type:
None
- create_prompt_version(*, name: str, version: PromptVersionDetail, template_structure: Literal['text', 'chat'] | Any | None = OMIT, project_id: str | None = OMIT, project_name: str | None = OMIT, request_options: RequestOptions | None = None) PromptVersionDetail¶
Create prompt version
- Parameters:
name (str)
version (PromptVersionDetail)
template_structure (Optional[CreatePromptVersionDetailTemplateStructure]) – Template structure for the prompt: ‘text’ or ‘chat’. Note: This field is only used when creating a new prompt. If a prompt with the given name already exists, this field is ignored and the existing prompt’s template structure is used. Template structure is immutable after prompt creation.
project_id (Optional[str]) – Project ID. Takes precedence over project_name when both are provided.
project_name (Optional[str]) – If provided, scopes the prompt to the specified project. Ignored when project_id is provided.
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Returns:
OK
- Return type:
- update_prompt_versions(*, ids: Sequence[str], update: PromptVersionUpdate, merge_tags: bool | None = OMIT, request_options: RequestOptions | None = None) None¶
Update one or more prompt versions.
Note: Prompt versions are immutable by design. Only organizational properties, such as tags etc., can be updated. Core properties like template and metadata cannot be modified after creation.
PATCH semantics: - non-empty values update the field - null values preserve existing field values (no change) - empty values explicitly clear the field
- Parameters:
ids (Sequence[str]) – IDs of prompt versions to update
update (PromptVersionUpdate)
merge_tags (Optional[bool]) – Tag merge behavior: - true: Add new tags to existing tags (union) - false: Replace all existing tags with new tags (default behaviour if not provided)
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Return type:
None
- get_prompt_by_id(id: str, *, mask_id: str | None = None, environment: str | None = None, request_options: RequestOptions | None = None) PromptDetail¶
Get prompt by id; when mask_id or environment is provided, requestedVersion is populated with the resolved version. mask_id and environment are mutually exclusive.
- Parameters:
id (str)
mask_id (Optional[str]) – Optional mask version id; when set, requestedVersion is the mask row for that id
environment (Optional[str]) – Optional environment name; when set, requestedVersion is the version mapped to that environment for the prompt
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Returns:
Prompt resource
- Return type:
- update_prompt(id: str, *, name: str, description: str | None = OMIT, tags: Sequence[str] | None = OMIT, request_options: RequestOptions | None = None) None¶
Update prompt
- Parameters:
id (str)
name (str)
description (Optional[str])
tags (Optional[Sequence[str]])
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Return type:
None
- delete_prompt(id: str, *, request_options: RequestOptions | None = None) None¶
Delete prompt
- Parameters:
id (str)
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Return type:
None
- delete_prompts_batch(*, ids: Sequence[str], request_options: RequestOptions | None = None) None¶
Delete prompts batch
- Parameters:
ids (Sequence[str])
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Return type:
None
- get_prompt_by_commit(commit: str, *, request_options: RequestOptions | None = None) PromptDetail¶
Get prompt by commit
- Parameters:
commit (str)
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Returns:
OK
- Return type:
- get_prompt_version_by_id(version_id: str, *, request_options: RequestOptions | None = None) PromptVersionDetail¶
Get prompt version by id
- Parameters:
version_id (str)
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Returns:
Prompt version resource
- Return type:
- get_prompt_version_by_number(prompt_id: str, version_number: str, *, request_options: RequestOptions | None = None) PromptVersionDetail¶
Get a prompt version by its sequential v<N> number for the given prompt.
- Parameters:
prompt_id (str)
version_number (str)
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Returns:
Prompt version resource
- Return type:
- get_prompt_versions(id: str, *, page: int | None = None, size: int | None = None, search: str | None = None, sorting: str | None = None, filters: str | None = None, request_options: RequestOptions | None = None) PromptVersionPagePublic¶
Get prompt versions
- Parameters:
id (str)
page (Optional[int])
size (Optional[int])
search (Optional[str]) – Search text to find in template or change description fields
sorting (Optional[str])
filters (Optional[str])
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Returns:
OK
- Return type:
- get_prompts_by_commits(*, commits: Sequence[str], request_options: RequestOptions | None = None) List[PromptVersionLinkPublic]¶
Get prompts by prompt version commits
- Parameters:
commits (Sequence[str])
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Returns:
OK
- Return type:
List[PromptVersionLinkPublic]
- restore_prompt_version(prompt_id: str, version_id: str, *, request_options: RequestOptions | None = None) PromptVersionDetail¶
Restore a prompt version by creating a new version with the content from the specified version
- Parameters:
prompt_id (str)
version_id (str)
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Returns:
OK
- Return type:
- retrieve_prompt_version(*, name: str, commit: str | None = OMIT, environment: str | None = OMIT, version_number: str | None = OMIT, project_name: str | None = OMIT, request_options: RequestOptions | None = None) PromptVersionDetail¶
Retrieve prompt version
- Parameters:
name (str)
commit (Optional[str])
environment (Optional[str]) – If provided, resolves to the version mapped to this environment for the prompt; mutually exclusive with commit and version_number
version_number (Optional[str]) – If provided, resolves to the version with this sequential number (e.g. v3); mutually exclusive with commit and environment
project_name (Optional[str]) – If provided, scopes the search to the specified project
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Returns:
OK
- Return type:
- retrieve_prompt_versions_by_ids(*, ids: Sequence[str], request_options: RequestOptions | None = None) List[PromptVersionDetail]¶
Retrieve a batch of prompt versions by their ids. Typically used by the UI to resolve mask overlays.
- Parameters:
ids (Sequence[str])
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Returns:
OK
- Return type:
List[PromptVersionDetail]
- set_prompt_version_environment(version_id: str, *, environments: Sequence[str], request_options: RequestOptions | None = None) None¶
Set or clear the environment owned by a prompt version. Setting a non-null environment moves ownership atomically: any previous owner of that environment for the same prompt has its environment cleared in the same transaction. Setting null clears the environment from the version. The environment must already exist in the workspace registry; unknown names return 404.
- Parameters:
version_id (str)
environments (Sequence[str])
request_options (Optional[RequestOptions]) – Request-specific configuration.
- Return type:
None
Usage Example¶
import opik
client = opik.Opik()
# Create a prompt
client.rest_client.prompts.create_prompt(
name="my-prompt",
prompt="Tell me about {{topic}}",
type="mustache"
)
# Get a prompt by name
prompt = client.rest_client.prompts.get_prompt_by_name("my-prompt")
# List all prompts
prompts = client.rest_client.prompts.find_prompts(
page=0,
size=10
)
# Get prompt versions
versions = client.rest_client.prompts.get_prompt_versions(
prompt_name="my-prompt"
)