Esta biblioteca le proporciona una forma sencilla de crear y ejecutar agentes de Hive.
Únase a nuestra comunidad de Discord para recibir apoyo y debate.
Puedes instalarlo directamente desde pip:
pip install git+https://github.com/hivenetwork-ai/hive-agent-py.git@main
O agréguelo a su archivo requisitos.txt :
hive-agent @ git+https://github.com/hivenetwork-ai/hive-agent-py@main
Para instalar con las dependencias web3 opcionales, puede especificarlas de la siguiente manera:
pip install git+https://github.com/hivenetwork-ai/hive-agent-py.git@main#egg=hive-agent[web3]
O agréguelo a su archivo requisitos.txt :
hive-agent[web3] @ git+https://github.com/hivenetwork-ai/hive-agent-py@main
Debe especificar OPENAI_API_KEY
en un archivo .env en este directorio.
Haga una copia del archivo .env.example y cámbiele el nombre a .env .
Para utilizar un archivo de configuración con su HiveAgent
, siga estos pasos:
Cree un archivo de configuración :
hive_config.toml
) en el directorio de su proyecto. (Ver hive_config_example.toml).Crear un contexto SDK :
from hive_agent . sdk_context import SDKContext
sdk_context = SDKContext ( config_path = "./hive_config.toml" )
Especifique la ruta de configuración :
HiveAgent
, proporcione la ruta relativa o absoluta a su archivo de configuración. from hive_agent import HiveAgent
import os
def get_config_path ( filename ):
return os . path . abspath ( os . path . join ( os . path . dirname ( __file__ ), filename ))
simple_agent = HiveAgent (
name = "Simple Agent" ,
functions = [],
instruction = "your instructions for this agent's goal" ,
sdk_context = sdk_context
#config_path=get_config_path("hive_config.toml") # ./hive_config.toml works too
)
Primero importe la clase HiveAgent
:
from hive_agent import HiveAgent
Cargue sus variables de entorno:
from dotenv import load_dotenv
load_dotenv ()
Luego crea una instancia de HiveAgent:
my_agent = HiveAgent (
name = "my_agent" ,
functions = [],
instruction = "your instructions for this agent's goal" ,
)
Luego, ejecute su agente:
my_agent . run ()
Finalmente, llame al punto final de API, /api/v1/chat
, para ver el resultado:
curl --request POST
--url http://localhost:8000/api/v1/chat
--header ' Content-Type: multipart/form-data '
--form ' user_id="test" '
--form ' session_id="test" '
--form ' chat_data={ "messages": [ { "role": "user", "content": "Who is Satoshi Nakamoto?" } ] } '
Puede crear herramientas que ayuden a su agente a manejar tareas más complejas. He aquí un ejemplo:
import os
from typing import Optional , Dict
from web3 import Web3
from hive_agent import HiveAgent
from dotenv import load_dotenv
load_dotenv ()
rpc_url = os . getenv ( "RPC_URL" ) # add an ETH Mainnet HTTP RPC URL to your `.env` file
def get_transaction_receipt ( transaction_hash : str ) -> Optional [ Dict ]:
"""
Fetches the receipt of a specified transaction on the Ethereum blockchain and returns it as a dictionary.
:param transaction_hash: The hash of the transaction to fetch the receipt for.
:return: A dictionary containing the transaction receipt details, or None if the transaction cannot be found.
"""
web3 = Web3 ( Web3 . HTTPProvider ( rpc_url ))
if not web3 . is_connected ():
print ( "unable to connect to Ethereum" )
return None
try :
transaction_receipt = web3 . eth . get_transaction_receipt ( transaction_hash )
return dict ( transaction_receipt )
except Exception as e :
print ( f"an error occurred: { e } " )
return None
if __name__ == "__main__" :
my_agent = HiveAgent (
name = "my_agent" ,
functions = [ get_transaction_receipt ]
)
my_agent . run ()
"""
[1] send a request:
```
curl --request POST
--url http://localhost:8000/api/v1/chat
--header 'Content-Type: multipart/form-data'
--form 'user_id="test"'
--form 'session_id="test"'
--form 'chat_data={ "messages": [ { "role": "user", "content": "Who is the sender of this transaction - 0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060" } ] }'
```
[2] result:
The address that initiated the transaction with hash 0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060 is 0xA1E4380A3B1f749673E270229993eE55F35663b4.
"""
Puede crear un enjambre de agentes para colaborar en tareas complejas. A continuación se muestra un ejemplo de cómo configurar y utilizar un enjambre:
from hive_agent . swarm import HiveSwarm
from hive_agent . agent import HiveAgent
from hive_agent . sdk_context import SDKContext
from hive_agent . llms . utils import llm_from_config
from hive_agent . utils import tools_from_funcs
from hive_agent . llms . claude import ClaudeLLM
import asyncio
# Create SDK Context
sdk_context = SDKContext ( config_path = "./hive_config_example.toml" )
def save_report ():
return "save_item_to_csv"
def search_on_web ():
return "search_on_web"
#You can use the default config using default_config or the config of a specific agent by using the get_config method.
llm = llm_from_config ( sdk_context . get_config ( "target_agent_id" ))
tools = tools_from_funcs ([ search_on_web ])
claude = ClaudeLLM ( llm = llm , tools = tools )
# Create individual agents
agent1 = HiveAgent ( name = "Research Agent" , instruction = "Conduct research on given topics" , sdk_context = sdk_context , functions = [ search_on_web ], llm = claude )
agent2 = HiveAgent ( name = "Analysis Agent" , instruction = "Analyze data and provide insights" , sdk_context = sdk_context , functions = [ save_report ])
agent3 = HiveAgent ( name = "Report Agent" , instruction = "Compile findings into a report" , sdk_context = sdk_context , functions = [])
# Create swarm
swarm = HiveSwarm ( name = "Research Team" , description = "A swarm of agents that collaborate on research tasks" ,
instruction = "Be helpful and collaborative" , functions = [], agents = [ agent1 , agent2 , agent3 ], sdk_context = sdk_context )
async def chat_with_swarm ():
return await swarm . chat ( "Can you analyze the following data: [1, 2, 3, 4, 5]" )
if __name__ == "__main__" :
asyncio . run ( chat_with_swarm ())
Puede agregar herramientas de recuperación para crear incrustaciones de vectores y recuperar información semántica. Creará un índice vectorial para cada documento pdf en la carpeta 'hive-agent-data/files/user' y puede filtrar archivos con el parámetro require_exts.
import os
from typing import Optional , Dict
from web3 import Web3
from hive_agent import HiveAgent
from dotenv import load_dotenv
load_dotenv ()
if __name__ == "__main__" :
my_agent = HiveAgent (
name = "retrieve-test" ,
functions = [],
retrieve = True ,
required_exts = [ '.md' ],
retrieval_tool = 'chroma'
)
my_agent . run ()
"""
[1] send a request:
```
curl --request POST
--url http://localhost:8000/api/v1/chat
--header 'Content-Type: multipart/form-data'
--form 'user_id="test"'
--form 'session_id="test"'
--form 'chat_data={ "messages": [ { "role": "user", "content": "Can you summarise the documents?" } ] }'
```
"""
Es posible que los usuarios de su agente/enjambre no siempre estén familiarizados con sus capacidades. Proporcionar indicaciones de muestra les permite explorar lo que usted ha creado. Aquí se explica cómo agregar mensajes de muestra que pueden usar antes de comprometerse a usar su agente/enjambre.
En su archivo hive_config.toml, cree una entrada de nivel superior llamada [sample_prompts]
y agregue una nueva matriz a las prompts
clave como esta:
[ sample_prompts ]
prompts = [
" What can you help me do? " ,
" Which tools do you have access to? " ,
" What are your capabilities? "
]
[ target_agent_id ]
model = " gpt-3.5-turbo "
timeout = 15
environment = " dev "
enable_multi_modal = true
ollama_server_url = ' http://123.456.78.90:11434 '
sample_prompts = [
" What can you help me do? " ,
" Which tools do you have access to? " ,
" What are your capabilities? "
]
Consulte ./hive_config_example.toml para ver un archivo de configuración de ejemplo.
El tutorial completo se puede encontrar en ./tutorial.md.
Si desea contribuir al código base, deberá configurar su entorno de desarrollo. Siga estos pasos:
OPENAI_API_KEY
de OpenAIcurl -sSL https://install.python-poetry.org | python3 -
export PATH= " $HOME /.local/bin: $PATH "
poetry shell
poetry install --no-root
tests/
: cd tests/
pytest
pytest tests/path/to/test_module.py
pytest -v
pytest -s
pip install coverage pytest-cov
pytest --cov --cov-report=html
Archivo de informes tests/htmlcov/index.html
Abra http://localhost:8000/docs con su navegador para ver la interfaz de usuario Swagger de la API.
https://swarmzero.ai