Obrigado Sam,
Mais fácil para alguns do que para outros. Eu sou da última categoria 
Estou mexendo nisso e ainda não consegui fazer funcionar. Não tenho experiência com ferramentas, então estou realmente ansioso para fazer isso funcionar para pensar em outras maneiras de usar ferramentas.
Tentei usar o código do seu blog com uma chave de API, o que não funcionou. A IA sugeriu que eu usasse uma URL codificada, então tentei isso sem sucesso.
A chave de API não foi chamada e não há logs criados com erros.
Isso é usado para categorizar automaticamente os tópicos na criação
Classificarei o tópico “Insights dos primeiros anos e milagres de Jesus” na categoria Novo Testamento, pois se relaciona com a vida e os ensinamentos de Jesus.
Movendo o tópico agora…
Foi isso que eu tentei.
/**
- Referência Rápida da API da Ferramenta
- Funções de Entrada
- invoke(parameters): Função principal. Recebe parâmetros (Objeto). Deve retornar um valor serializável em JSON.
- Exemplo:
- function invoke(parameters) { return “resultado”; }
- details(): Opcional. Retorna uma string descrevendo a ferramenta.
- Exemplo:
- function details() { return “Descrição da ferramenta.”; }
- Objetos Fornecidos
-
- http
- http.get(url, options?): Realiza uma requisição HTTP GET.
- Parâmetros:
-
url (string): A URL da requisição.
-
options (Object, opcional):
-
headers (Object): Cabeçalhos da requisição.
- Retorna:
-
{ status: number, body: string }
- http.post(url, options?): Realiza uma requisição HTTP POST.
- Parâmetros:
-
url (string): A URL da requisição.
-
options (Object, opcional):
-
headers (Object): Cabeçalhos da requisição.
-
body (string): Corpo da requisição.
- Retorna:
-
{ status: number, body: string }
- (também disponível: http.put, http.patch, http.delete)
- Nota: Máximo de 20 requisições HTTP por execução.
-
- llm
- llm.truncate(text, length): Trunca o texto para um comprimento de token especificado.
- Parâmetros:
-
text (string): Texto a ser truncado.
-
length (number): Tokens máximos.
- Retorna:
-
String truncada.
-
- index
- index.search(query, options?): Busca documentos indexados.
- Parâmetros:
-
query (string): Consulta de busca.
-
options (Object, opcional):
-
filenames (Array): Limita a busca a arquivos específicos.
-
limit (number): Máximo de fragmentos (até 200).
- Retorna:
-
Array de { fragment: string, metadata: string }
-
- upload
- upload.create(filename, base_64_content): Envia um arquivo.
- Parâmetros:
-
filename (string): Nome do arquivo.
-
base_64_content (string): Conteúdo do arquivo codificado em Base64.
- Retorna:
-
{ id: number, short_url: string }
-
- chain
- chain.setCustomRaw(raw): Define o corpo da postagem e sai da cadeia.
- Parâmetros:
-
raw (string): Conteúdo bruto a ser adicionado à postagem.
- Restrições
- Tempo de Execução: ≤ 2000ms
- Memória: ≤ 10MB
- Requisições HTTP: ≤ 20 por execução
- Exceder os limites resultará em erros ou encerramento.
- Segurança
- Ambiente Sandboxed: Sem acesso a objetos do sistema ou globais.
- Sem Acesso ao Sistema de Arquivos: Não é possível ler ou escrever arquivos.
*/
/**
- Categorizador de Tópicos do Discourse
- Esta ferramenta permite alterar a categoria de um tópico do Discourse
- usando a API do Discourse.
*/
/**
- Categorizador de Tópicos do Discourse
- Esta ferramenta permite alterar a categoria de um tópico do Discourse
- usando a API do Discourse.
*/
/**
- Categorizador de Tópicos do Discourse
- Esta ferramenta permite alterar a categoria de um tópico do Discourse
- usando a API do Discourse.
*/
function invoke(params) {
// Validação de parâmetros obrigatórios
if (!params.topic_id) {
return { error: “Parâmetro obrigatório ausente: topic_id” };
}
if (!params.category_id) {
return { error: “Parâmetro obrigatório ausente: category_id” };
}
// URL base para sua instância do Discourse
const baseUrl = “https://community.mysite.com”;
// URL completa do endpoint da API para atualizar um tópico
const apiUrl = ${baseUrl}/t/${params.topic_id}.json;
// Prepara o corpo da requisição
const requestBody = {
category_id: params.category_id
};
// Parâmetro opcional: atualiza o título se fornecido
if (params.title) {
requestBody.title = params.title;
}
// Use sua chave de API fornecida
const apiKey = “Discourse-API-Key”;
try {
// Faz a requisição PUT para atualizar o tópico
const response = http.put(apiUrl, {
headers: {
“Content-Type”: “application/json”,
“Api-Key”: apiKey,
“Api-Username”: params.api_username || “system”
},
body: JSON.stringify(requestBody)
});
if (response.status >= 200 && response.status < 300) {
return {
success: true,
topic_id: params.topic_id,
category_id: params.category_id,
response: JSON.parse(response.body)
};
} else {
return {
error: `Falha ao atualizar a categoria do tópico. Status: ${response.status}`,
details: response.body
};
}
} catch (error) {
return {
error: “Ocorreu um erro ao atualizar a categoria do tópico”,
details: error.toString()
};
}
}
function details() {
return “Categoriza um tópico movendo-o para uma categoria especificada”;
}