Skip to content

Commit 7f72d64

Browse files
authored
Merge pull request #4152 from Agenta-AI/fix/update-ui-code-snippets-v96-invoke
fix(frontend): Update UI code snippets to v0.96.0 unified invoke API
2 parents 789a368 + 290f732 commit 7f72d64

11 files changed

Lines changed: 64 additions & 61 deletions

File tree

web/oss/src/code_snippets/endpoints/fetch_config/curl.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import {getEnv} from "@/oss/lib/helpers/dynamicEnv"
22

33
export default function cURLCode(appName: string, env_name: string, apiKey: string): string {
4-
return `curl -L '${getEnv("NEXT_PUBLIC_AGENTA_API_URL")}/variants/configs/fetch' \\
4+
return `curl -X POST '${getEnv("NEXT_PUBLIC_AGENTA_API_URL")}/preview/applications/revisions/retrieve' \\
55
-H 'Content-Type: application/json' \\
66
-H "Authorization: ApiKey ${apiKey}" \\
77
-d '{
8-
"environment_ref": {
9-
"slug": "${env_name}"
10-
},
118
"application_ref": {
129
"slug": "${appName}"
10+
},
11+
"environment_ref": {
12+
"slug": "${env_name}"
1313
}
1414
}'
1515
`

web/oss/src/code_snippets/endpoints/fetch_config/typescript.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ export default function tsCode(appName: string, env_name: string, apiKey: string
66
const codeString = `import axios from 'axios';
77
88
const getConfig = async (appName: string, environmentSlug: string) => {
9-
const baseUrl = '${getEnv("NEXT_PUBLIC_AGENTA_API_URL")}/variants/configs/fetch';
9+
const baseUrl = '${getEnv("NEXT_PUBLIC_AGENTA_API_URL")}/preview/applications/revisions/retrieve';
1010
1111
try {
1212
const response = await axios.post(baseUrl, {
13-
environment_ref: {
14-
slug: environmentSlug,
15-
},
1613
application_ref: {
1714
slug: appName,
1815
},
16+
environment_ref: {
17+
slug: environmentSlug,
18+
},
1919
}, {
2020
headers: {
2121
'Content-Type': 'application/json',

web/oss/src/code_snippets/endpoints/fetch_variant/curl.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,18 @@ export const buildCurlSnippet = (
66
variantVersion: number,
77
apiKey: string,
88
) => {
9-
return `curl -X POST "${getEnv("NEXT_PUBLIC_AGENTA_API_URL")}/variants/configs/fetch" \\
9+
return `curl -X POST "${getEnv("NEXT_PUBLIC_AGENTA_API_URL")}/preview/applications/revisions/retrieve" \\
1010
-H "Content-Type: application/json" \\
1111
-H "Authorization: ApiKey ${apiKey}" \\
1212
-d '{
13-
"variant_ref": {
14-
"slug": "${variantSlug}",
15-
"version": ${variantVersion}
16-
},
1713
"application_ref": {
1814
"slug": "${appSlug}"
15+
},
16+
"application_variant_ref": {
17+
"slug": "${variantSlug}"
18+
},
19+
"application_revision_ref": {
20+
"version": "${variantVersion}"
1921
}
2022
}'
2123
`

web/oss/src/code_snippets/endpoints/fetch_variant/typescript.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,22 @@ export const buildTypescriptSnippet = (
66
variantVersion: number,
77
apiKey: string,
88
) => {
9-
return `const fetchResponse = await fetch('${getEnv("NEXT_PUBLIC_AGENTA_API_URL")}/variants/configs/fetch', {
9+
return `const fetchResponse = await fetch('${getEnv("NEXT_PUBLIC_AGENTA_API_URL")}/preview/applications/revisions/retrieve', {
1010
method: 'POST',
1111
headers: {
1212
'Content-Type': 'application/json',
1313
'Authorization': 'ApiKey ${apiKey}',
1414
},
1515
body: JSON.stringify({
16-
variant_ref: {
17-
slug: '${variantSlug}',
18-
version: ${variantVersion},
19-
},
2016
application_ref: {
2117
slug: '${appSlug}',
2218
},
19+
application_variant_ref: {
20+
slug: '${variantSlug}',
21+
},
22+
application_revision_ref: {
23+
version: '${variantVersion}',
24+
},
2325
}),
2426
});
2527

web/oss/src/code_snippets/endpoints/invoke_llm_app/curl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export default function cURLCode(uri: string, params: string, apiKey: string): string {
22
const parsedParams = JSON.parse(params)
3-
const isChat = parsedParams.messages !== undefined
3+
const isChat = parsedParams?.data?.inputs?.messages !== undefined
44

55
return `curl -X POST "${uri}" \\
66
-H "Content-Type: application/json" \\

web/oss/src/code_snippets/endpoints/invoke_llm_app/python.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export default function pythonCode(uri: string, params: string, apiKey: string): string {
22
const parsedParams = JSON.parse(params)
3-
const isChat = parsedParams.messages !== undefined
3+
const isChat = parsedParams?.data?.inputs?.messages !== undefined
44

55
return `import requests
66
import json

web/oss/src/code_snippets/endpoints/invoke_llm_app/typescript.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {js as beautify} from "js-beautify"
22

33
export default function tsCode(uri: string, params: string, apiKey: string): string {
44
const parsedParams = JSON.parse(params)
5-
const isChat = parsedParams.messages !== undefined
5+
const isChat = parsedParams?.data?.inputs?.messages !== undefined
66

77
const codeString = `import axios from 'axios';
88

web/oss/src/components/DeploymentsDashboard/assets/UseApiContent.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ const UseApiContent = ({
7070
return createParams(synthesized, envName || "none", "add_a_value", currentApp)
7171
}, [variableNames, envName, currentApp])
7272

73-
// deploymentUrl resolves to /run (resolves config from the deployed environment).
73+
// deploymentUrl resolves to /v0/invoke (resolves config from the deployed environment).
7474
const invokeLlmUrl = useMemo(() => uri?.trim() || "", [uri])
7575

7676
const invokeLlmAppCodeSnippet = useMemo(

web/oss/src/components/DeploymentsDashboard/assets/VariantUseApiContent.tsx

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -151,37 +151,33 @@ const VariantUseApiContent = ({initialRevisionId}: VariantUseApiContentProps) =>
151151
const params = useMemo(() => {
152152
const synthesized = variableNames.map((name) => ({name, input: name === "messages"}))
153153

154-
const mainParams: Record<string, any> = {}
155-
const secondaryParams: Record<string, any> = {}
154+
const inputs: Record<string, any> = {}
156155

157156
synthesized.forEach((item) => {
158-
if (item.input) {
159-
mainParams[item.name] = "add_a_value"
160-
} else {
161-
secondaryParams[item.name] = "add_a_value"
162-
}
157+
inputs[item.name] = "add_a_value"
163158
})
164159

165160
const hasMessagesParam = synthesized.some((p) => p?.name === "messages")
166161
const isChat = !!currentApp?.flags?.is_chat || hasMessagesParam
167162
if (isChat) {
168-
mainParams["messages"] = [
163+
inputs["messages"] = [
169164
{
170165
role: "user",
171166
content: "",
172167
},
173168
]
174-
mainParams["inputs"] = secondaryParams
175-
} else if (Object.keys(secondaryParams).length > 0) {
176-
mainParams["inputs"] = secondaryParams
177169
}
178170

179-
// Use variant refs instead of environment
180-
mainParams["app"] = appSlug
181-
mainParams["variant_slug"] = variantSlug
182-
mainParams["variant_version"] = variantVersion
171+
const params: Record<string, any> = {
172+
data: {inputs},
173+
references: {
174+
application: {slug: appSlug},
175+
application_variant: {slug: variantSlug},
176+
application_revision: {version: String(variantVersion)},
177+
},
178+
}
183179

184-
return JSON.stringify(mainParams, null, 2)
180+
return JSON.stringify(params, null, 2)
185181
}, [variableNames, currentApp?.flags?.is_chat, appSlug, variantSlug, variantVersion])
186182

187183
const fetchConfigCodeSnippet = useMemo(

web/oss/src/pages/w/[workspace_id]/p/[project_id]/apps/[app_id]/endpoints/index.tsx

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -70,27 +70,30 @@ const createParamsFromSchema = (
7070
isChat: boolean,
7171
appName: string | null,
7272
): string => {
73-
const mainParams: GenericObject = {}
73+
const inputs: GenericObject = {}
7474

7575
if (inputSchema) {
7676
const properties = inputSchema.properties as Record<string, unknown> | undefined
7777
if (properties) {
7878
for (const [key, schemaDef] of Object.entries(properties)) {
7979
const schema = schemaDef as Record<string, unknown> | undefined
80-
mainParams[key] = schema?.default ?? "add_a_value"
80+
inputs[key] = schema?.default ?? "add_a_value"
8181
}
8282
}
8383
}
8484

8585
if (isChat) {
86-
mainParams["messages"] = [{role: "user", content: ""}]
86+
inputs["messages"] = [{role: "user", content: ""}]
8787
}
8888

89-
mainParams["environment"] = environmentName
90-
if (appName) {
91-
mainParams["app"] = appName
89+
const params: GenericObject = {
90+
data: {inputs},
91+
references: {
92+
...(appName ? {application: {slug: appName}} : {}),
93+
environment: {slug: environmentName},
94+
},
9295
}
93-
return JSON.stringify(mainParams, null, 2)
96+
return JSON.stringify(params, null, 2)
9497
}
9598

9699
/**
@@ -103,32 +106,32 @@ export const createParams = (
103106
value: string | number,
104107
app?: {name?: string | null; slug?: string; flags?: {is_chat?: boolean}} | null,
105108
) => {
106-
const mainParams: GenericObject = {}
107-
const secondaryParams: GenericObject = {}
109+
const inputs: GenericObject = {}
108110

109111
inputParams?.forEach((item) => {
110112
if (item.input) {
111-
mainParams[item.name] = item.default || value
113+
inputs[item.name] = item.default || value
112114
} else {
113-
secondaryParams[item.name] = item.default || value
115+
inputs[item.name] = item.default || value
114116
}
115117
})
116118
const hasMessagesParam = Array.isArray(inputParams)
117119
? inputParams.some((p) => p?.name === "messages")
118120
: false
119121
const isChat = !!app?.flags?.is_chat || hasMessagesParam
120122
if (isChat) {
121-
mainParams["messages"] = [{role: "user", content: ""}]
122-
mainParams["inputs"] = secondaryParams
123-
} else if (Object.keys(secondaryParams).length > 0) {
124-
mainParams["inputs"] = secondaryParams
123+
inputs["messages"] = [{role: "user", content: ""}]
125124
}
126125

127-
mainParams["environment"] = environmentName
128-
if (app) {
129-
mainParams["app"] = app.name ?? app.slug
126+
const appSlug = app?.name ?? app?.slug
127+
const params: GenericObject = {
128+
data: {inputs},
129+
references: {
130+
...(appSlug ? {application: {slug: appSlug}} : {}),
131+
environment: {slug: environmentName},
132+
},
130133
}
131-
return JSON.stringify(mainParams, null, 2)
134+
return JSON.stringify(params, null, 2)
132135
}
133136

134137
export default function VariantEndpoint() {

0 commit comments

Comments
 (0)