{{variable}} que são renderizados no servidor quando você
recupera um prompt, permitindo reutilizar o mesmo modelo em diferentes contextos.
Criar um prompt
Crie um prompt com um nome e um modelo. A primeira versão é criada automaticamente.mka1 llm prompts create \
--body '{
"name": "greeting",
"description": "Um modelo simples de saudação",
"template": "Olá, {{name}}! Boas-vindas à {{company}}.",
"metadata": { "team": "onboarding" }
}' \
-H 'X-On-Behalf-Of: <end-user-id>'
import { SDK } from '@meetkai/mka1';
const mka1 = new SDK({
bearerAuth: `Bearer ${YOUR_API_KEY}`,
});
const result = await mka1.llm.prompts.create({
xOnBehalfOf: '<end-user-id>', // opcional — atribua a solicitação a um dos seus usuários finais
createPromptRequest: {
name: 'greeting',
description: 'Um modelo simples de saudação',
template: 'Olá, {{name}}! Boas-vindas à {{company}}.',
metadata: { team: 'onboarding' },
},
});
console.log(result.id); // prompt_abc123...
console.log(result.activeVersion); // 1
console.log(result.version?.version); // 1
const promptId = result.id; // usado nos exemplos abaixo
using MeetKai.MKA1;
using MeetKai.MKA1.Types.Components;
var sdk = new SDK(
bearerAuth: "Bearer <mka1-api-key>",
serverUrl: "https://apigw.mka1.com"
);
var result = await sdk.Llm.Prompts.CreateAsync(
new CreatePromptRequest
{
Name = "greeting",
Description = "Um modelo simples de saudação",
Template = "Olá, {{name}}! Boas-vindas à {{company}}.",
Metadata = new Dictionary<string, object> { { "team", "onboarding" } },
}
);
Console.WriteLine(result.CreatePromptResponseValue!.Id); // prompt_abc123...
Console.WriteLine(result.CreatePromptResponseValue!.ActiveVersion); // 1
Console.WriteLine(result.CreatePromptResponseValue!.Version!.Version); // 1
from meetkai_mka1 import SDK
sdk = SDK(bearer_auth="Bearer YOUR_API_KEY")
result = sdk.llm.prompts.create(
name="greeting",
description="Um modelo simples de saudação",
template="Olá, {{name}}! Boas-vindas à {{company}}.",
metadata={"team": "onboarding"},
)
print(result.id) # prompt_abc123...
print(result.active_version) # 1
print(result.version.version) # 1
curl https://apigw.mka1.com/api/v1/llm/prompts \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <mka1-api-key>' \
--header 'X-On-Behalf-Of: <end-user-id>' \
--data '{
"name": "greeting",
"description": "Um modelo simples de saudação",
"template": "Olá, {{name}}! Boas-vindas à {{company}}.",
"metadata": { "team": "onboarding" }
}'
Recuperar um prompt com variáveis renderizadas
Passevariables como um parâmetro de consulta para renderizar o modelo com seus valores.
Marcadores sem correspondência são mantidos como estão.
Opcionalmente, passe version para recuperar (e renderizar) uma versão específica. Se omitido,
a versão ativa será retornada.
A resposta sempre inclui
active_template (activeTemplate no SDK TypeScript) — o texto bruto
do modelo da versão solicitada, com os {{placeholders}} intactos. Ao passar variables,
a resposta também inclui rendered_template (renderedTemplate) com o resultado substituído;
ele não estará presente quando nenhuma variável for fornecida.mka1 llm prompts get \
--id prompt_abc123 \
--variables '{"name":"Alice","company":"Acme"}'
const prompt = await mka1.llm.prompts.get({
xOnBehalfOf: '<end-user-id>',
id: promptId,
variables: JSON.stringify({ name: 'Alice', company: 'Acme' }),
});
console.log(prompt.renderedTemplate);
// "Olá, Alice! Boas-vindas à Acme."
using MeetKai.MKA1;
var sdk = new SDK(
bearerAuth: "Bearer <mka1-api-key>",
serverUrl: "https://apigw.mka1.com"
);
var prompt = await sdk.Llm.Prompts.GetAsync(
id: promptId,
variables: "{\"name\":\"Alice\",\"company\":\"Acme\"}"
);
Console.WriteLine(prompt.GetPromptResponseValue!.RenderedTemplate);
// "Olá, Alice! Boas-vindas à Acme."
prompt = sdk.llm.prompts.get(
id=prompt_id,
variables='{"name": "Alice", "company": "Acme"}',
)
print(prompt.rendered_template)
# "Olá, Alice! Boas-vindas à Acme."
# Codifique em URL o JSON das variáveis
curl "https://apigw.mka1.com/api/v1/llm/prompts/prompt_abc123?variables=%7B%22name%22%3A%22Alice%22%2C%22company%22%3A%22Acme%22%7D" \
--header 'Authorization: Bearer <mka1-api-key>' \
--header 'X-On-Behalf-Of: <end-user-id>'
Listar prompts
Recupere uma lista paginada de todos os prompts. Useafter para paginação baseada em cursor.
mka1 llm prompts list --limit 10 --order desc
const list = await mka1.llm.prompts.list({
xOnBehalfOf: '<end-user-id>',
limit: 10,
order: 'desc',
});
for (const prompt of list.data) {
console.log(prompt.name, `v${prompt.activeVersion}`);
}
if (list.hasMore) {
// Busque a próxima página usando o último ID como cursor
const next = await mka1.llm.prompts.list({
xOnBehalfOf: '<end-user-id>',
limit: 10,
after: list.lastId,
});
}
using MeetKai.MKA1;
var sdk = new SDK(
bearerAuth: "Bearer <mka1-api-key>",
serverUrl: "https://apigw.mka1.com"
);
var prompts = await sdk.Llm.Prompts.ListAsync();
Console.WriteLine(prompts);
prompts = sdk.llm.prompts.list()
for prompt in prompts.data:
print(prompt.name, f"v{prompt.active_version}")
curl "https://apigw.mka1.com/api/v1/llm/prompts?limit=10&order=desc" \
--header 'Authorization: Bearer <mka1-api-key>' \
--header 'X-On-Behalf-Of: <end-user-id>'
Atualizar metadados do prompt
Atualize o nome, a descrição ou os metadados de um prompt. Para alterar o modelo, crie uma nova versão. Observação:metadata substitui o objeto de metadados existente (não é mesclado). Para limpar uma descrição, passe null.
mka1 llm prompts update \
--id prompt_abc123 \
--body '{
"name": "welcome-greeting",
"description": "Saudação atualizada para o fluxo de boas-vindas",
"metadata": { "team": "onboarding", "reviewed": true }
}'
const updated = await mka1.llm.prompts.update({
xOnBehalfOf: '<end-user-id>',
id: promptId,
requestBody: {
name: 'welcome-greeting',
description: 'Saudação atualizada para o fluxo de boas-vindas',
metadata: { team: 'onboarding', reviewed: true },
},
});
using MeetKai.MKA1;
using MeetKai.MKA1.Types.Requests;
var sdk = new SDK(
bearerAuth: "Bearer <mka1-api-key>",
serverUrl: "https://apigw.mka1.com"
);
var updated = await sdk.Llm.Prompts.UpdateAsync(
id: promptId,
body: new UpdatePromptRequestBody
{
Name = "welcome-greeting",
Description = "Saudação atualizada para o fluxo de boas-vindas",
Metadata = new Dictionary<string, object>
{
{ "team", "onboarding" },
{ "reviewed", true },
},
}
);
updated = sdk.llm.prompts.update(
id=prompt_id,
name="welcome-greeting",
description="Saudação atualizada para o fluxo de boas-vindas",
metadata={"team": "onboarding", "reviewed": True},
)
curl "https://apigw.mka1.com/api/v1/llm/prompts/prompt_abc123" \
--request PUT \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <mka1-api-key>' \
--header 'X-On-Behalf-Of: <end-user-id>' \
--data '{
"name": "welcome-greeting",
"description": "Saudação atualizada para o fluxo de boas-vindas",
"metadata": { "team": "onboarding", "reviewed": true }
}'
Criar uma nova versão
Cada alteração no modelo cria uma nova versão. A nova versão se torna automaticamente a versão ativa.mka1 llm prompts create-version \
--id prompt_abc123 \
--body '{
"template": "Olá, {{name}}! Boas-vindas à {{company}}. Seu onboarding começa em {{date}}."
}'
const version = await mka1.llm.prompts.createVersion({
xOnBehalfOf: '<end-user-id>',
id: promptId,
requestBody: {
template: 'Olá, {{name}}! Boas-vindas à {{company}}. Seu onboarding começa em {{date}}.',
},
});
console.log(version.version); // 2
console.log(version.template); // O novo texto do modelo
using MeetKai.MKA1;
using MeetKai.MKA1.Types.Requests;
var sdk = new SDK(
bearerAuth: "Bearer <mka1-api-key>",
serverUrl: "https://apigw.mka1.com"
);
var version = await sdk.Llm.Prompts.CreateVersionAsync(
id: promptId,
body: new CreatePromptVersionRequestBody
{
Template = "Olá, {{name}}! Boas-vindas à {{company}}. Seu onboarding começa em {{date}}.",
}
);
Console.WriteLine(version.CreateVersionResponse!.Version); // 2
Console.WriteLine(version.CreateVersionResponse!.Template); // O novo texto do modelo
version = sdk.llm.prompts.create_version(
id=prompt_id,
template="Olá, {{name}}! Boas-vindas à {{company}}. Seu onboarding começa em {{date}}.",
)
print(version.version) # 2
print(version.template) # O novo texto do modelo
curl "https://apigw.mka1.com/api/v1/llm/prompts/prompt_abc123/versions" \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <mka1-api-key>' \
--header 'X-On-Behalf-Of: <end-user-id>' \
--data '{
"template": "Olá, {{name}}! Boas-vindas à {{company}}. Seu onboarding começa em {{date}}."
}'
Ver histórico de versões
Liste todas as versões de um prompt para consultar seu histórico completo de alterações.mka1 llm prompts list-versions --id prompt_abc123 --order desc
const versions = await mka1.llm.prompts.listVersions({
xOnBehalfOf: '<end-user-id>',
id: promptId,
order: 'desc',
});
for (const v of versions.data) {
console.log(`v${v.version}: ${v.template.slice(0, 50)}...`);
}
using MeetKai.MKA1;
using MeetKai.MKA1.Types.Requests;
var sdk = new SDK(
bearerAuth: "Bearer <mka1-api-key>",
serverUrl: "https://apigw.mka1.com"
);
var versions = await sdk.Llm.Prompts.ListVersionsAsync(
id: promptId,
order: ListPromptVersionsOrder.Desc
);
foreach (var v in versions.ListVersionsResponse!.Data)
{
Console.WriteLine($"v{v.Version}: {v.Template.Substring(0, 50)}...");
}
versions = sdk.llm.prompts.list_versions(id=prompt_id)
for v in versions.data:
print(f"v{v.version}: {v.template[:50]}...")
curl "https://apigw.mka1.com/api/v1/llm/prompts/prompt_abc123/versions?order=desc" \
--header 'Authorization: Bearer <mka1-api-key>' \
--header 'X-On-Behalf-Of: <end-user-id>'
Recuperar uma versão específica
Busque uma única versão pelo seu número de versão.mka1 llm prompts get-version --id prompt_abc123 --version-param 1
const v1 = await mka1.llm.prompts.getVersion({
xOnBehalfOf: '<end-user-id>',
id: promptId,
version: 1,
});
console.log(v1.template);
using MeetKai.MKA1;
var sdk = new SDK(
bearerAuth: "Bearer <mka1-api-key>",
serverUrl: "https://apigw.mka1.com"
);
var v1 = await sdk.Llm.Prompts.GetVersionAsync(
id: promptId,
version: 1
);
Console.WriteLine(v1.CreateVersionResponse!.Template);
v1 = sdk.llm.prompts.get_version(id=prompt_id, version=1)
print(v1.template)
curl "https://apigw.mka1.com/api/v1/llm/prompts/prompt_abc123/versions/1" \
--header 'Authorization: Bearer <mka1-api-key>' \
--header 'X-On-Behalf-Of: <end-user-id>'
Reverter para uma versão anterior
A reversão define uma versão anterior como a versão ativa. Todas as versões são preservadas — a reversão não exclui versões mais recentes, portanto você sempre pode avançar novamente.# Atualmente na versão 2, reverta para a versão 1
mka1 llm prompts rollback --id prompt_abc123 --version-param 1
// Atualmente na versão 2, reverta para a versão 1
const rolledBack = await mka1.llm.prompts.rollback({
xOnBehalfOf: '<end-user-id>',
id: promptId,
requestBody: {
version: 1,
},
});
console.log(rolledBack.activeVersion); // 1
console.log(rolledBack.latestVersion); // 2 (ainda existe)
using MeetKai.MKA1;
using MeetKai.MKA1.Types.Requests;
var sdk = new SDK(
bearerAuth: "Bearer <mka1-api-key>",
serverUrl: "https://apigw.mka1.com"
);
// Atualmente na versão 2, reverta para a versão 1
var rolledBack = await sdk.Llm.Prompts.RollbackAsync(
id: promptId,
body: new RollbackPromptRequestBody { Version = 1 }
);
Console.WriteLine(rolledBack.UpdatePromptResponse!.ActiveVersion); // 1
Console.WriteLine(rolledBack.UpdatePromptResponse!.LatestVersion); // 2 (ainda existe)
# Atualmente na versão 2, reverta para a versão 1
rolled_back = sdk.llm.prompts.rollback(id=prompt_id, version=1)
print(rolled_back.active_version) # 1
print(rolled_back.latest_version) # 2 (ainda existe)
curl "https://apigw.mka1.com/api/v1/llm/prompts/prompt_abc123/rollback" \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <mka1-api-key>' \
--header 'X-On-Behalf-Of: <end-user-id>' \
--data '{ "version": 1 }'
Excluir um prompt
Excluir um prompt o remove permanentemente, juntamente com todas as suas versões.mka1 llm prompts delete --id prompt_abc123
const deleted = await mka1.llm.prompts.delete({
xOnBehalfOf: '<end-user-id>',
id: promptId,
});
console.log(deleted.deleted); // true
using MeetKai.MKA1;
var sdk = new SDK(
bearerAuth: "Bearer <mka1-api-key>",
serverUrl: "https://apigw.mka1.com"
);
var deleted = await sdk.Llm.Prompts.DeleteAsync(id: promptId);
Console.WriteLine(deleted.DeletePromptResponseValue!.Deleted); // True
deleted = sdk.llm.prompts.delete(id=prompt_id)
print(deleted.deleted) # True
curl "https://apigw.mka1.com/api/v1/llm/prompts/prompt_abc123" \
--request DELETE \
--header 'Authorization: Bearer <mka1-api-key>' \
--header 'X-On-Behalf-Of: <end-user-id>'
Exemplo completo: fluxo de versionamento e reversão
Este exemplo demonstra o ciclo de vida completo — criar um prompt, iterar no modelo, revisar o histórico e reverter.# 1. Crie um prompt com o modelo inicial
mka1 llm prompts create \
--body '{
"name": "support-reply",
"template": "Olá, {{customer}}, obrigado por entrar em contato sobre {{issue}}."
}'
# → { "id": "prompt_abc123", "active_version": 1, "version": { "version": 1, ... }, ... }
# 2. Publique a v2 com um tom mais amigável
mka1 llm prompts create-version \
--id prompt_abc123 \
--body '{
"template": "Olá, {{customer}}! Recebemos sua mensagem sobre {{issue}} e estamos cuidando disso."
}'
# 3. Recupere o prompt com variáveis renderizadas
mka1 llm prompts get \
--id prompt_abc123 \
--variables '{"customer":"Alice","issue":"billing"}'
# 4. Revise o histórico de versões
mka1 llm prompts list-versions --id prompt_abc123 --order asc
# 5. Reverta para a v1
mka1 llm prompts rollback --id prompt_abc123 --version-param 1
# 6. Limpe os recursos
mka1 llm prompts delete --id prompt_abc123
import { SDK } from '@meetkai/mka1';
const mka1 = new SDK({
bearerAuth: `Bearer ${YOUR_API_KEY}`,
});
// 1. Crie um prompt com o modelo inicial
const prompt = await mka1.llm.prompts.create({
xOnBehalfOf: 'user-123',
createPromptRequest: {
name: 'support-reply',
template: 'Olá, {{customer}}, obrigado por entrar em contato sobre {{issue}}.',
},
});
console.log('Criado:', prompt.id, 'v1');
// 2. Publique a v2 com um tom mais amigável
const v2 = await mka1.llm.prompts.createVersion({
xOnBehalfOf: 'user-123',
id: prompt.id,
requestBody: {
template: 'Olá, {{customer}}! Recebemos sua mensagem sobre {{issue}} e estamos cuidando disso.',
},
});
console.log('v2 criada:', v2.version);
// 3. Recupere o prompt — a versão ativa agora é a v2
const current = await mka1.llm.prompts.get({
xOnBehalfOf: 'user-123',
id: prompt.id,
variables: JSON.stringify({ customer: 'Alice', issue: 'billing' }),
});
console.log('Ativa:', current.renderedTemplate);
// "Olá, Alice! Recebemos sua mensagem sobre billing e estamos cuidando disso."
// 4. Revise o histórico de versões
const history = await mka1.llm.prompts.listVersions({
xOnBehalfOf: 'user-123',
id: prompt.id,
order: 'asc',
});
for (const v of history.data) {
console.log(` v${v.version}: ${v.template}`);
}
// 5. Reverta para a v1
const rolledBack = await mka1.llm.prompts.rollback({
xOnBehalfOf: 'user-123',
id: prompt.id,
requestBody: {
version: 1,
},
});
console.log('Revertido para a v' + rolledBack.activeVersion);
// activeVersion=1, latestVersion=2
// 6. Limpe os recursos
await mka1.llm.prompts.delete({ xOnBehalfOf: 'user-123', id: prompt.id });
using MeetKai.MKA1;
using MeetKai.MKA1.Types.Components;
using MeetKai.MKA1.Types.Requests;
var sdk = new SDK(
bearerAuth: "Bearer <mka1-api-key>",
serverUrl: "https://apigw.mka1.com"
);
// 1. Crie um prompt com o modelo inicial
var prompt = await sdk.Llm.Prompts.CreateAsync(
new CreatePromptRequest
{
Name = "support-reply",
Template = "Olá, {{customer}}, obrigado por entrar em contato sobre {{issue}}.",
}
);
var promptId = prompt.CreatePromptResponseValue!.Id;
Console.WriteLine($"Criado: {promptId} v1");
// 2. Publique a v2 com um tom mais amigável
var v2 = await sdk.Llm.Prompts.CreateVersionAsync(
id: promptId,
body: new CreatePromptVersionRequestBody
{
Template = "Olá, {{customer}}! Recebemos sua mensagem sobre {{issue}} e estamos cuidando disso.",
}
);
Console.WriteLine($"v2 criada: {v2.CreateVersionResponse!.Version}");
// 3. Recupere o prompt com variáveis renderizadas
var current = await sdk.Llm.Prompts.GetAsync(
id: promptId,
variables: "{\"customer\":\"Alice\",\"issue\":\"billing\"}"
);
Console.WriteLine($"Ativa: {current.GetPromptResponseValue!.RenderedTemplate}");
// 4. Revise o histórico de versões
var history = await sdk.Llm.Prompts.ListVersionsAsync(
id: promptId,
order: ListPromptVersionsOrder.Asc
);
foreach (var v in history.ListVersionsResponse!.Data)
{
Console.WriteLine($" v{v.Version}: {v.Template}");
}
// 5. Reverta para a v1
var rolledBack = await sdk.Llm.Prompts.RollbackAsync(
id: promptId,
body: new RollbackPromptRequestBody { Version = 1 }
);
Console.WriteLine($"Revertido para a v{rolledBack.UpdatePromptResponse!.ActiveVersion}");
// 6. Limpe os recursos
await sdk.Llm.Prompts.DeleteAsync(id: promptId);
from meetkai_mka1 import SDK
sdk = SDK(bearer_auth="Bearer YOUR_API_KEY")
# 1. Crie um prompt com o modelo inicial
prompt = sdk.llm.prompts.create(
name="support-reply",
template="Olá, {{customer}}, obrigado por entrar em contato sobre {{issue}}.",
)
print("Criado:", prompt.id, "v1")
# 2. Publique a v2 com um tom mais amigável
v2 = sdk.llm.prompts.create_version(
id=prompt.id,
template="Olá, {{customer}}! Recebemos sua mensagem sobre {{issue}} e estamos cuidando disso.",
)
print("v2 criada:", v2.version)
# 3. Recupere o prompt — a versão ativa agora é a v2
current = sdk.llm.prompts.get(
id=prompt.id,
variables='{"customer": "Alice", "issue": "billing"}',
)
print("Ativa:", current.rendered_template)
# "Olá, Alice! Recebemos sua mensagem sobre billing e estamos cuidando disso."
# 4. Revise o histórico de versões
history = sdk.llm.prompts.list_versions(id=prompt.id)
for v in history.data:
print(f" v{v.version}: {v.template}")
# 5. Reverta para a v1
rolled_back = sdk.llm.prompts.rollback(id=prompt.id, version=1)
print("Revertido para a v" + str(rolled_back.active_version))
# active_version=1, latest_version=2
# 6. Limpe os recursos
sdk.llm.prompts.delete(id=prompt.id)
# 1. Crie um prompt
curl https://apigw.mka1.com/api/v1/llm/prompts \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <mka1-api-key>' \
--header 'X-On-Behalf-Of: user-123' \
--data '{
"name": "support-reply",
"template": "Olá, {{customer}}, obrigado por entrar em contato sobre {{issue}}."
}'
# → { "id": "prompt_abc123", "active_version": 1, "version": { "version": 1, ... }, ... }
# 2. Crie a v2 com um tom mais amigável
curl https://apigw.mka1.com/api/v1/llm/prompts/prompt_abc123/versions \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <mka1-api-key>' \
--header 'X-On-Behalf-Of: user-123' \
--data '{
"template": "Olá, {{customer}}! Recebemos sua mensagem sobre {{issue}} e estamos cuidando disso."
}'
# 3. Obtenha o prompt com variáveis renderizadas
curl "https://apigw.mka1.com/api/v1/llm/prompts/prompt_abc123?variables=%7B%22customer%22%3A%22Alice%22%2C%22issue%22%3A%22billing%22%7D" \
--header 'Authorization: Bearer <mka1-api-key>' \
--header 'X-On-Behalf-Of: user-123'
# 4. Veja o histórico de versões
curl "https://apigw.mka1.com/api/v1/llm/prompts/prompt_abc123/versions?order=asc" \
--header 'Authorization: Bearer <mka1-api-key>' \
--header 'X-On-Behalf-Of: user-123'
# 5. Reverta para a v1
curl https://apigw.mka1.com/api/v1/llm/prompts/prompt_abc123/rollback \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <mka1-api-key>' \
--header 'X-On-Behalf-Of: user-123' \
--data '{ "version": 1 }'
# 6. Exclua o prompt
curl https://apigw.mka1.com/api/v1/llm/prompts/prompt_abc123 \
--request DELETE \
--header 'Authorization: Bearer <mka1-api-key>' \
--header 'X-On-Behalf-Of: user-123'
Detalhes de comportamento
| Aspecto | Detalhe |
|---|---|
| Versionamento | Imutável — cada alteração no modelo cria uma nova versão que não pode ser modificada |
| Versão ativa | Novas versões são ativadas automaticamente; use a reversão para alternar para uma versão diferente |
| Reversão | Não destrutiva — define active_version sem excluir versões mais recentes |
| Paginação | Baseada em cursor para listar prompts — use o parâmetro after com last_id da resposta |
| Renderização de modelo | No servidor — passe o parâmetro de consulta variables; marcadores sem correspondência são preservados |
| Propriedade | Por chave de API — os prompts são isolados pelo contexto de autenticação |
| Concorrência | Detecção de conflitos — a criação simultânea de versões retorna 409 |
Próximas etapas
- Gerar uma resposta — use prompts renderizados como entrada para a API Responses
- Extrair dados estruturados — combine prompts com extração estruturada
- Conversas — gerencie trocas de múltiplos turnos com prompts de sistema versionados