Guias
Ferramentas
Integração Rápida de Ferramentas
10min
aqui, usaremos o googlesearch como exemplo para demonstrar como integrar rapidamente uma ferramenta 1\ prepare o yaml do provedor de ferramenta introdução este yaml declara um novo provedor de ferramenta e inclui informações como o nome do provedor, ícone, autor e outros detalhes que são recuperados pelo frontend para exibição exemplo precisamos criar um módulo (pasta) chamado google em core/tools/provider/builtin e criar o arquivo google yaml o nome deve ser consistente com o nome do módulo subsequentemente, todas as operações relacionadas a esta ferramenta serão realizadas sob este módulo identity # informações básicas do provedor de ferramenta author paragraph # autor name google # nome, único, sem duplicação com outros provedores label # rótulo para exibição no frontend en us google # rótulo em inglês description # descrição para exibição no frontend en us google # descrição em inglês icon icon svg # ícone, precisa ser colocado na pasta assets do módulo atual o campo identity é obrigatório e contém as informações básicas do provedor de ferramenta, incluindo autor, nome, rótulo, descrição, ícone, etc o ícone precisa ser colocado na pasta assets do módulo atual você pode se referir a api/core/tools/provider/builtin/google/ assets/icon svg \<svg xmlns="http //www w3 org/2000/svg" width="24" height="25" viewbox="0 0 24 25" fill="none"> \<path d="m22 501 12 7332c22 501 11 8699 22 4296 11 2399 22 2748 10 5865h12 2153v14 4832h18 12c18 001 15 4515 17 3582 16 9099 15 9296 17 8898l15 9096 18 0203l19 0902 20 435l19 3106 20 4565c21 3343 18 6249 22 501 15 9298 22 501 12 7332z" fill="#4285f4"/> \<path d="m12 214 23c15 1068 23 17 5353 22 0666 19 3092 20 4567l15 9282 17 8899c15 0235 18 5083 13 8092 18 9399 12 214 18 9399c9 38069 18 9399 6 97596 17 1083 6 11874 14 5766l5 99309 14 5871l2 68583 17 0954l2 64258 17 2132c4 40446 20 6433 8 0235 23 12 214 23z" fill="#34a853"/> \<path d="m6 12046 14 5766c5 89428 13 9233 5 76337 13 2233 5 76337 12 5c5 76337 11 7766 5 89428 11 0766 6 10856 10 4233l6 10257 10 2841l2 75386 7 7355l2 64429 7 78658c1 91814 9 20993 1 50146 10 8083 1 50146 12 5c1 50146 14 1916 1 91814 15 7899 2 64429 17 2132l6 12046 14 5766z" fill="#fbbc05"/> \<path d="m12 2141 6 05997c14 2259 6 05997 15 583 6 91163 16 3569 7 62335l19 3807 4 73c17 5236 3 03834 15 1069 2 12 2141 2c8 02353 2 4 40447 4 35665 2 64258 7 78662l6 10686 10 4233c6 97598 7 89166 9 38073 6 05997 12 2141 6 05997z" fill="#eb4335"/> \</svg> 2\ prepare as credenciais do provedor o google, como uma ferramenta de terceiros, usa a api fornecida pelo serpapi, que requer uma chave api para ser utilizada isso significa que esta ferramenta precisa de uma credencial para ser usada para ferramentas como a wikipedia, não é necessário preencher o campo de credencial, você pode se referir a api/core/tools/provider/builtin/wikipedia/wikipedia yaml identity author paragraph name wikipedia label en us wikipedia pt br wikipedia description en us wikipedia is a free online encyclopedia, created and edited by volunteers around the world pt br wikipedia é uma enciclopédia online gratuita, criada e editada por voluntários ao redor do mundo icon icon svg credentials for provider após configurar o campo de credencial, o efeito é o seguinte identity author paragraph name google label en us google description en us google icon icon svg credentials for provider # campo de credencial serpapi api key # nome do campo de credencial type secret input # tipo do campo de credencial required true # obrigatório ou não label # rótulo do campo de credencial en us serpapi api key # rótulo em inglês placeholder # texto de placeholder do campo de credencial en us please input your serpapi api key # placeholder em inglês help # texto de ajuda do campo de credencial en us get your serpapi api key from serpapi # texto de ajuda em inglês url https //serpapi com/manage api key # link de ajuda do campo de credencial 3\ prepare o yaml da ferramenta um provedor pode ter várias ferramentas, cada ferramenta precisa de um arquivo yaml para descrição, este arquivo contém as informações básicas, parâmetros, saída, etc , da ferramenta ainda tomando o googlesearch como exemplo, precisamos criar um módulo de ferramentas sob o módulo google e criar o arquivo tools/google search yaml , com o seguinte conteúdo identity # informações básicas da ferramenta name google search # nome da ferramenta, único, sem duplicação com outras ferramentas author paragraph # autor label # rótulo para exibição no frontend en us googlesearch # rótulo em inglês description # descrição para exibição no frontend human # introdução para exibição no frontend, suporta vários idiomas en us a tool for performing a google serp search and extracting snippets and webpages input should be a search query llm a tool for performing a google serp search and extracting snippets and webpages input should be a search query # introdução passada para o llm, para que o llm compreenda melhor esta ferramenta, sugerimos escrever o máximo de informações detalhadas possíveis aqui, para que o llm possa compreender e usar esta ferramenta parameters # lista de parâmetros \ name query # nome do parâmetro type string # tipo do parâmetro required true # obrigatório ou não label # rótulo do parâmetro en us query string # rótulo em inglês human description # introdução para exibição no frontend, suporta vários idiomas en us used for searching llm description key words for searching # introdução passada para o llm, da mesma forma, para que o llm compreenda melhor este parâmetro, sugerimos escrever o máximo de informações detalhadas possíveis aqui, para que o llm compreenda este parâmetro form llm # tipo de formulário, llm significa que este parâmetro precisa ser inferido pelo agente, o frontend não exibirá este parâmetro \ name result type type select # tipo de parâmetro required true options # opções da caixa de seleção \ value text label en us text \ value link label en us link default link label en us result type human description en us used for selecting the result type, text or link form form # tipo de formulário, form significa que este parâmetro precisa ser preenchido pelo usuário no frontend antes de a conversa começar o campo identity é obrigatório, ele contém as informações básicas da ferramenta, incluindo nome, autor, rótulo, descrição, etc 4\ adicionar lógica da ferramenta depois de concluir a configuração da ferramenta, podemos começar a escrever o código da ferramenta que define como ela será invocada crie google search py no módulo google/tools, com o seguinte conteúdo from core tools tool builtin tool import builtintool from core tools entities tool entities import toolinvokemessage from typing import any, dict, list, union class googlesearchtool(builtintool) def invoke(self, user id str, tool parameters dict\[str, any], ) > union\[toolinvokemessage, list\[toolinvokemessage]] """ invocar ferramentas """ query = tool parameters\['query'] result type = tool parameters\['result type'] api key = self runtime credentials\['serpapi api key'] \# todo pesquisar com serpapi result = serpapi(api key) run(query, result type=result type) if result type == 'text' return self create text message(text=result) return self create link message(link=result) parâmetros a lógica geral da ferramenta está no método invoke , este método aceita dois parâmetros user id e tool parameters , que representam respectivamente o id do usuário e os parâmetros da ferramenta dados de retorno quando a ferramenta retorna, você pode escolher retornar uma mensagem ou várias mensagens, aqui retornamos uma mensagem, usando create text message e create link message para criar uma mensagem de texto ou uma mensagem de link 5\ adicionar código do provedor finalmente, precisamos criar uma classe de provedor no módulo provider para implementar a lógica de verificação de credenciais do provedor se a verificação de credenciais falhar, ela lançará uma exceção toolprovidercredentialvalidationerror crie google py no módulo google, com o seguinte conteúdo from core tools entities tool entities import toolinvokemessage, toolprovidertype from core tools tool tool import tool from core tools provider builtin tool provider import builtintoolprovidercontroller from core tools errors import toolprovidercredentialvalidationerror from core tools provider builtin google tools google search import googlesearchtool from typing import any, dict class googleprovider(builtintoolprovidercontroller) def validate credentials(self, credentials dict\[str, any]) > none try \# 1 aqui você precisa instanciar um googlesearchtool com googlesearchtool(), ele carregará automaticamente a configuração yaml do googlesearchtool, mas neste momento não tem informações de credenciais \# 2 então, você precisa usar o método fork tool runtime para passar as informações de credenciais atuais para o googlesearchtool \# 3 finalmente, invoque o, os parâmetros precisam ser passados de acordo com as regras de parâmetro configuradas no yaml do googlesearchtool googlesearchtool() fork tool runtime( meta={ "credentials" credentials, } ) invoke( user id='', tool parameters={ "query" "test", "result type" "link" }, ) except exception as e raise toolprovidercredentialvalidationerror(str(e)) conclusão após a conclusão dos passos acima, podemos ver esta ferramenta no frontend, e ela pode ser usada no agente claro, como o google search precisa de uma credencial, antes de usá lo, você também precisa inserir suas credenciais no frontend