@arizeai/phoenix-client 7.14.0 → 7.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/esm/__generated__/api/v1.d.ts +14 -1
- package/dist/esm/__generated__/api/v1.d.ts.map +1 -1
- package/dist/esm/constants/serverRequirements.d.ts +2 -0
- package/dist/esm/constants/serverRequirements.d.ts.map +1 -1
- package/dist/esm/constants/serverRequirements.js +14 -0
- package/dist/esm/constants/serverRequirements.js.map +1 -1
- package/dist/esm/prompts/deletePromptVersionTag.d.ts +36 -0
- package/dist/esm/prompts/deletePromptVersionTag.d.ts.map +1 -0
- package/dist/esm/prompts/deletePromptVersionTag.js +44 -0
- package/dist/esm/prompts/deletePromptVersionTag.js.map +1 -0
- package/dist/esm/prompts/index.d.ts +2 -0
- package/dist/esm/prompts/index.d.ts.map +1 -1
- package/dist/esm/prompts/index.js +2 -0
- package/dist/esm/prompts/index.js.map +1 -1
- package/dist/esm/prompts/upsertPromptVersionTag.d.ts +40 -0
- package/dist/esm/prompts/upsertPromptVersionTag.d.ts.map +1 -0
- package/dist/esm/prompts/upsertPromptVersionTag.js +49 -0
- package/dist/esm/prompts/upsertPromptVersionTag.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/utils/resolvePromptVersionId.d.ts +11 -0
- package/dist/esm/utils/resolvePromptVersionId.d.ts.map +1 -0
- package/dist/esm/utils/resolvePromptVersionId.js +15 -0
- package/dist/esm/utils/resolvePromptVersionId.js.map +1 -0
- package/dist/src/__generated__/api/v1.d.ts +14 -1
- package/dist/src/__generated__/api/v1.d.ts.map +1 -1
- package/dist/src/constants/serverRequirements.d.ts +2 -0
- package/dist/src/constants/serverRequirements.d.ts.map +1 -1
- package/dist/src/constants/serverRequirements.js +15 -1
- package/dist/src/constants/serverRequirements.js.map +1 -1
- package/dist/src/prompts/deletePromptVersionTag.d.ts +36 -0
- package/dist/src/prompts/deletePromptVersionTag.d.ts.map +1 -0
- package/dist/src/prompts/deletePromptVersionTag.js +47 -0
- package/dist/src/prompts/deletePromptVersionTag.js.map +1 -0
- package/dist/src/prompts/index.d.ts +2 -0
- package/dist/src/prompts/index.d.ts.map +1 -1
- package/dist/src/prompts/index.js +2 -0
- package/dist/src/prompts/index.js.map +1 -1
- package/dist/src/prompts/upsertPromptVersionTag.d.ts +40 -0
- package/dist/src/prompts/upsertPromptVersionTag.d.ts.map +1 -0
- package/dist/src/prompts/upsertPromptVersionTag.js +52 -0
- package/dist/src/prompts/upsertPromptVersionTag.js.map +1 -0
- package/dist/src/utils/resolvePromptVersionId.d.ts +11 -0
- package/dist/src/utils/resolvePromptVersionId.d.ts.map +1 -0
- package/dist/src/utils/resolvePromptVersionId.js +18 -0
- package/dist/src/utils/resolvePromptVersionId.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/prompts.mdx +30 -1
- package/package.json +7 -7
- package/src/__generated__/api/v1.ts +14 -1
- package/src/constants/serverRequirements.ts +16 -0
- package/src/prompts/deletePromptVersionTag.ts +64 -0
- package/src/prompts/index.ts +2 -0
- package/src/prompts/upsertPromptVersionTag.ts +69 -0
- package/src/utils/resolvePromptVersionId.ts +18 -0
package/docs/prompts.mdx
CHANGED
|
@@ -3,7 +3,7 @@ title: "Prompts"
|
|
|
3
3
|
description: "Manage prompts with @arizeai/phoenix-client"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
The prompts module lets you create prompt versions in Phoenix, fetch them back by selector, list prompts, update a prompt's description and metadata, delete a prompt, and adapt prompt versions to supported provider SDKs.
|
|
6
|
+
The prompts module lets you create prompt versions in Phoenix, fetch them back by selector, manage prompt version tags, list prompts, update a prompt's description and metadata, delete a prompt, and adapt prompt versions to supported provider SDKs.
|
|
7
7
|
|
|
8
8
|
<section className="hidden" data-agent-context="relevant-source-files" aria-label="Relevant source files">
|
|
9
9
|
<h2>Relevant Source Files</h2>
|
|
@@ -43,6 +43,32 @@ const prompt = await getPrompt({
|
|
|
43
43
|
|
|
44
44
|
`prompt` can be selected by `{ name }`, `{ name, tag }`, or `{ versionId }`.
|
|
45
45
|
|
|
46
|
+
## Manage Version Tags
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
import {
|
|
50
|
+
deletePromptVersionTag,
|
|
51
|
+
upsertPromptVersionTag,
|
|
52
|
+
} from "@arizeai/phoenix-client/prompts";
|
|
53
|
+
|
|
54
|
+
await upsertPromptVersionTag({
|
|
55
|
+
prompt: { versionId: "UHJvbXB0VmVyc2lvbjox" },
|
|
56
|
+
name: "production",
|
|
57
|
+
description: "Currently deployed version",
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
await deletePromptVersionTag({
|
|
61
|
+
prompt: { versionId: "UHJvbXB0VmVyc2lvbjox" },
|
|
62
|
+
name: "staging",
|
|
63
|
+
});
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Tag names are unique within a prompt, not within an individual version. Upserting a new name creates the tag on the target version. Upserting a name that already exists on another version of the same prompt moves that tag to the target version and updates its description. The same name can still be used independently by unrelated prompts.
|
|
67
|
+
|
|
68
|
+
Deletion also resolves the name within the prompt identified by `prompt.versionId`; the tag can be attached to any version of that prompt.
|
|
69
|
+
|
|
70
|
+
Tag upserts require Phoenix 8.22.0 or later. Tag deletion requires Phoenix 13.20.0 or later.
|
|
71
|
+
|
|
46
72
|
## Update Description And Metadata
|
|
47
73
|
|
|
48
74
|
```ts
|
|
@@ -99,9 +125,12 @@ Supported `sdk` targets:
|
|
|
99
125
|
<ul>
|
|
100
126
|
<li><code>src/prompts/createPrompt.ts</code></li>
|
|
101
127
|
<li><code>src/prompts/deletePrompt.ts</code></li>
|
|
128
|
+
<li><code>src/prompts/deletePromptVersionTag.ts</code></li>
|
|
102
129
|
<li><code>src/prompts/getPrompt.ts</code></li>
|
|
103
130
|
<li><code>src/prompts/listPrompts.ts</code></li>
|
|
104
131
|
<li><code>src/prompts/updatePrompt.ts</code></li>
|
|
132
|
+
<li><code>src/prompts/upsertPromptVersionTag.ts</code></li>
|
|
133
|
+
<li><code>src/utils/resolvePromptVersionId.ts</code></li>
|
|
105
134
|
<li><code>src/prompts/sdks/toSDK.ts</code></li>
|
|
106
135
|
<li><code>src/types/prompts.ts</code></li>
|
|
107
136
|
</ul>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arizeai/phoenix-client",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.15.0",
|
|
4
4
|
"description": "A client for the Phoenix API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"arize",
|
|
@@ -116,22 +116,22 @@
|
|
|
116
116
|
"zod": "^4.6.5"
|
|
117
117
|
},
|
|
118
118
|
"devDependencies": {
|
|
119
|
-
"@ai-sdk/openai": "^4.0.
|
|
120
|
-
"@ai-sdk/otel": "^1.0.
|
|
119
|
+
"@ai-sdk/openai": "^4.0.78",
|
|
120
|
+
"@ai-sdk/otel": "^1.0.116",
|
|
121
121
|
"@anthropic-ai/sdk": "^0.111.0",
|
|
122
122
|
"@arizeai/phoenix-evals": "2.6.0",
|
|
123
123
|
"@arizeai/phoenix-testing": "0.0.0",
|
|
124
124
|
"@opentelemetry/api": "^1.9.1",
|
|
125
125
|
"@opentelemetry/sdk-trace-node": "^2.11.0",
|
|
126
126
|
"@types/async": "^3.2.26",
|
|
127
|
-
"@types/node": "^26.6.
|
|
128
|
-
"ai": "^7.0.
|
|
127
|
+
"@types/node": "^26.6.3",
|
|
128
|
+
"ai": "^7.0.116",
|
|
129
129
|
"dotenv": "^17.4.2",
|
|
130
130
|
"jest": "^30.5.2",
|
|
131
131
|
"openai": "^6.49.0",
|
|
132
132
|
"openapi-typescript": "^7.13.0",
|
|
133
|
-
"tsx": "^4.23.
|
|
134
|
-
"vitest": "^5.0.
|
|
133
|
+
"tsx": "^4.23.15",
|
|
134
|
+
"vitest": "^5.0.2"
|
|
135
135
|
},
|
|
136
136
|
"peerDependencies": {
|
|
137
137
|
"@anthropic-ai/sdk": "^0.35.0",
|
|
@@ -3334,6 +3334,11 @@ export interface components {
|
|
|
3334
3334
|
* @description The description of the experiment
|
|
3335
3335
|
*/
|
|
3336
3336
|
description: string | null;
|
|
3337
|
+
/**
|
|
3338
|
+
* Sequence Number
|
|
3339
|
+
* @description The 1-based sequence number of the experiment within its dataset, in creation order.
|
|
3340
|
+
*/
|
|
3341
|
+
sequence_number: number;
|
|
3337
3342
|
/**
|
|
3338
3343
|
* Repetitions
|
|
3339
3344
|
* @description Number of times the experiment is repeated
|
|
@@ -9383,6 +9388,10 @@ export interface operations {
|
|
|
9383
9388
|
cursor?: string | null;
|
|
9384
9389
|
/** @description The max number of experiments to return at a time. */
|
|
9385
9390
|
limit?: number;
|
|
9391
|
+
/** @description Order by creation: 'desc' (default) returns newest experiments first, 'asc' returns oldest first so the lowest sequence numbers are on the first page. */
|
|
9392
|
+
sort_dir?: "asc" | "desc";
|
|
9393
|
+
/** @description When provided, return only the experiments with these 1-based per-dataset sequence numbers. */
|
|
9394
|
+
sequence_numbers?: number[] | null;
|
|
9386
9395
|
};
|
|
9387
9396
|
header?: never;
|
|
9388
9397
|
path: {
|
|
@@ -10580,10 +10589,14 @@ export interface operations {
|
|
|
10580
10589
|
getSpans: {
|
|
10581
10590
|
parameters: {
|
|
10582
10591
|
query?: {
|
|
10583
|
-
/** @description Pagination cursor
|
|
10592
|
+
/** @description Pagination cursor: the next_cursor of a previous response with the same sort */
|
|
10584
10593
|
cursor?: string | null;
|
|
10585
10594
|
/** @description Maximum number of spans to return */
|
|
10586
10595
|
limit?: number;
|
|
10596
|
+
/** @description Sort field. 'id' orders by insertion; 'start_time' orders by when the span started, breaking ties by id. */
|
|
10597
|
+
sort?: "id" | "start_time";
|
|
10598
|
+
/** @description Sort direction */
|
|
10599
|
+
order?: "asc" | "desc";
|
|
10587
10600
|
/** @description Inclusive lower bound time */
|
|
10588
10601
|
start_time?: string | null;
|
|
10589
10602
|
/** @description Exclusive upper bound time */
|
|
@@ -199,6 +199,20 @@ export const DELETE_PROMPT: RouteRequirement = {
|
|
|
199
199
|
minServerVersion: [13, 20, 0],
|
|
200
200
|
};
|
|
201
201
|
|
|
202
|
+
export const UPSERT_PROMPT_VERSION_TAG: RouteRequirement = {
|
|
203
|
+
kind: "route",
|
|
204
|
+
method: "POST",
|
|
205
|
+
path: "/v1/prompt_versions/{prompt_version_id}/tags",
|
|
206
|
+
minServerVersion: [8, 22, 0],
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
export const DELETE_PROMPT_VERSION_TAG: RouteRequirement = {
|
|
210
|
+
kind: "route",
|
|
211
|
+
method: "DELETE",
|
|
212
|
+
path: "/v1/prompt_versions/{prompt_version_id}/tags/{tag_name}",
|
|
213
|
+
minServerVersion: [13, 20, 0],
|
|
214
|
+
};
|
|
215
|
+
|
|
202
216
|
export const PATCH_PROMPT: RouteRequirement = {
|
|
203
217
|
kind: "route",
|
|
204
218
|
method: "PATCH",
|
|
@@ -293,6 +307,8 @@ export const ALL_REQUIREMENTS: readonly CapabilityRequirement[] = [
|
|
|
293
307
|
ADD_SPAN_NOTE_IDENTIFIER,
|
|
294
308
|
ADD_SESSION_NOTE_IDENTIFIER,
|
|
295
309
|
DELETE_PROMPT,
|
|
310
|
+
UPSERT_PROMPT_VERSION_TAG,
|
|
311
|
+
DELETE_PROMPT_VERSION_TAG,
|
|
296
312
|
PATCH_PROMPT,
|
|
297
313
|
AGENT_SESSION_CREATE,
|
|
298
314
|
AGENT_SESSION_LIST,
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { createClient } from "../client";
|
|
2
|
+
import { DELETE_PROMPT_VERSION_TAG } from "../constants/serverRequirements";
|
|
3
|
+
import type { ClientFn } from "../types/core";
|
|
4
|
+
import type { GetPromptByVersionSelector } from "../types/prompts";
|
|
5
|
+
import { resolvePromptVersionId } from "../utils/resolvePromptVersionId";
|
|
6
|
+
import { ensureServerCapability } from "../utils/serverVersionUtils";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Parameters for deleting a prompt version tag.
|
|
10
|
+
*/
|
|
11
|
+
export interface DeletePromptVersionTagParams extends ClientFn {
|
|
12
|
+
/** A version belonging to the prompt that owns the tag. */
|
|
13
|
+
prompt: GetPromptByVersionSelector;
|
|
14
|
+
/** The prompt-scoped tag name to delete. */
|
|
15
|
+
name: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Delete a tag from the prompt that owns the given prompt version.
|
|
20
|
+
*
|
|
21
|
+
* Tag names are unique within a prompt, so `name` identifies the tag across
|
|
22
|
+
* all versions of that prompt. The tag does not need to be attached to the
|
|
23
|
+
* selected version.
|
|
24
|
+
*
|
|
25
|
+
* @param params - The prompt version tag to delete.
|
|
26
|
+
* @param params.prompt - A version selector used to identify the prompt.
|
|
27
|
+
* @param params.name - The prompt-scoped tag name to delete.
|
|
28
|
+
* @returns A promise that resolves once the tag has been deleted.
|
|
29
|
+
* @throws {@link HttpError} when Phoenix rejects the request.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* import { deletePromptVersionTag } from "@arizeai/phoenix-client/prompts";
|
|
34
|
+
*
|
|
35
|
+
* await deletePromptVersionTag({
|
|
36
|
+
* prompt: { versionId: "UHJvbXB0VmVyc2lvbjox" },
|
|
37
|
+
* name: "production",
|
|
38
|
+
* });
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export async function deletePromptVersionTag({
|
|
42
|
+
client: _client,
|
|
43
|
+
prompt,
|
|
44
|
+
name,
|
|
45
|
+
}: DeletePromptVersionTagParams): Promise<void> {
|
|
46
|
+
const promptVersionId = resolvePromptVersionId(prompt);
|
|
47
|
+
const client = _client ?? createClient();
|
|
48
|
+
await ensureServerCapability({
|
|
49
|
+
client,
|
|
50
|
+
requirement: DELETE_PROMPT_VERSION_TAG,
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
await client.DELETE(
|
|
54
|
+
"/v1/prompt_versions/{prompt_version_id}/tags/{tag_name}",
|
|
55
|
+
{
|
|
56
|
+
params: {
|
|
57
|
+
path: {
|
|
58
|
+
prompt_version_id: promptVersionId,
|
|
59
|
+
tag_name: name,
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
}
|
package/src/prompts/index.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export * from "./getPrompt";
|
|
2
2
|
export * from "./createPrompt";
|
|
3
3
|
export * from "./deletePrompt";
|
|
4
|
+
export * from "./deletePromptVersionTag";
|
|
4
5
|
export * from "./listPrompts";
|
|
6
|
+
export * from "./upsertPromptVersionTag";
|
|
5
7
|
export * from "./updatePrompt";
|
|
6
8
|
export * from "./sdks";
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { createClient } from "../client";
|
|
2
|
+
import { UPSERT_PROMPT_VERSION_TAG } from "../constants/serverRequirements";
|
|
3
|
+
import type { ClientFn } from "../types/core";
|
|
4
|
+
import type { GetPromptByVersionSelector } from "../types/prompts";
|
|
5
|
+
import { resolvePromptVersionId } from "../utils/resolvePromptVersionId";
|
|
6
|
+
import { ensureServerCapability } from "../utils/serverVersionUtils";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Parameters for creating or moving a prompt version tag.
|
|
10
|
+
*/
|
|
11
|
+
export interface UpsertPromptVersionTagParams extends ClientFn {
|
|
12
|
+
/** The prompt version that should own the tag. */
|
|
13
|
+
prompt: GetPromptByVersionSelector;
|
|
14
|
+
/** The prompt-scoped tag name. */
|
|
15
|
+
name: string;
|
|
16
|
+
/** An optional description for the tag. */
|
|
17
|
+
description?: string | null;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Create a prompt version tag or move an existing tag to another version.
|
|
22
|
+
*
|
|
23
|
+
* Tag names are unique within a prompt. If another version of the same prompt
|
|
24
|
+
* already has `name`, the tag is moved to the selected version and its
|
|
25
|
+
* description is updated.
|
|
26
|
+
*
|
|
27
|
+
* @param params - The prompt version tag to create or move.
|
|
28
|
+
* @param params.prompt - The target prompt, selected by version ID.
|
|
29
|
+
* @param params.name - The prompt-scoped tag name.
|
|
30
|
+
* @param params.description - An optional description for the tag.
|
|
31
|
+
* @returns A promise that resolves once the tag has been created or moved.
|
|
32
|
+
* @throws {@link HttpError} when Phoenix rejects the request.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* import { upsertPromptVersionTag } from "@arizeai/phoenix-client/prompts";
|
|
37
|
+
*
|
|
38
|
+
* await upsertPromptVersionTag({
|
|
39
|
+
* prompt: { versionId: "UHJvbXB0VmVyc2lvbjox" },
|
|
40
|
+
* name: "production",
|
|
41
|
+
* description: "Currently deployed version",
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export async function upsertPromptVersionTag({
|
|
46
|
+
client: _client,
|
|
47
|
+
prompt,
|
|
48
|
+
name,
|
|
49
|
+
description,
|
|
50
|
+
}: UpsertPromptVersionTagParams): Promise<void> {
|
|
51
|
+
const promptVersionId = resolvePromptVersionId(prompt);
|
|
52
|
+
const client = _client ?? createClient();
|
|
53
|
+
await ensureServerCapability({
|
|
54
|
+
client,
|
|
55
|
+
requirement: UPSERT_PROMPT_VERSION_TAG,
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
await client.POST("/v1/prompt_versions/{prompt_version_id}/tags", {
|
|
59
|
+
params: {
|
|
60
|
+
path: {
|
|
61
|
+
prompt_version_id: promptVersionId,
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
body: {
|
|
65
|
+
name,
|
|
66
|
+
description,
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { GetPromptByVersionSelector } from "../types/prompts";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Resolve a version selector to the `{prompt_version_id}` path segment used by
|
|
5
|
+
* the Phoenix REST API.
|
|
6
|
+
*
|
|
7
|
+
* @param prompt - The prompt, selected by version ID.
|
|
8
|
+
* @returns The prompt version ID to interpolate into the request path.
|
|
9
|
+
* @throws An error if the selector does not contain a non-empty version ID.
|
|
10
|
+
*/
|
|
11
|
+
export function resolvePromptVersionId(
|
|
12
|
+
prompt: GetPromptByVersionSelector
|
|
13
|
+
): string {
|
|
14
|
+
if (!prompt.versionId) {
|
|
15
|
+
throw new Error("versionId must be a non-empty prompt version id.");
|
|
16
|
+
}
|
|
17
|
+
return prompt.versionId;
|
|
18
|
+
}
|