from anthropic import Anthropic
from anthropic.types import (
MessageParam,
TextBlockParam,
SearchResultBlockParam,
ToolResultBlockParam
)
client = Anthropic()
# Definir uma ferramenta de pesquisa de base de conhecimento
knowledge_base_tool = {
"name": "search_knowledge_base",
"description": "Pesquisar a base de conhecimento da empresa por informações",
"input_schema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "A consulta de pesquisa"
}
},
"required": ["query"]
}
}
# Função para lidar com a chamada da ferramenta
def search_knowledge_base(query):
# Sua lógica de pesquisa aqui
# Retorna resultados de pesquisa no formato correto
return [
SearchResultBlockParam(
type="search_result",
source="https://docs.company.com/product-guide",
title="Guia de Configuração do Produto",
content=[
TextBlockParam(
type="text",
text="Para configurar o produto, navegue até Configurações > Configuração. O timeout padrão é de 30 segundos, mas pode ser ajustado entre 10-120 segundos com base em suas necessidades."
)
],
citations={"enabled": True}
),
SearchResultBlockParam(
type="search_result",
source="https://docs.company.com/troubleshooting",
title="Guia de Solução de Problemas",
content=[
TextBlockParam(
type="text",
text="Se você encontrar erros de timeout, primeiro verifique as configurações. Causas comuns incluem latência de rede e valores de timeout incorretos."
)
],
citations={"enabled": True}
)
]
# Criar uma mensagem com a ferramenta
response = client.messages.create(
model="claude-sonnet-4-20250514", # Funciona com todos os modelos suportados
max_tokens=1024,
tools=[knowledge_base_tool],
messages=[
MessageParam(
role="user",
content="Como configuro as configurações de timeout?"
)
]
)
# Quando o Claude chama a ferramenta, forneça os resultados de pesquisa
if response.content[0].type == "tool_use":
tool_result = search_knowledge_base(response.content[0].input["query"])
# Enviar o resultado da ferramenta de volta
final_response = client.messages.create(
model="claude-sonnet-4-20250514", # Funciona com todos os modelos suportados
max_tokens=1024,
messages=[
MessageParam(role="user", content="Como configuro as configurações de timeout?"),
MessageParam(role="assistant", content=response.content),
MessageParam(
role="user",
content=[
ToolResultBlockParam(
type="tool_result",
tool_use_id=response.content[0].id,
content=tool_result # Resultados de pesquisa vão aqui
)
]
)
]
)