Cette bibliothèque vous offre un moyen simple de créer et d'exécuter des agents Hive.
Rejoignez notre communauté Discord pour obtenir du soutien et des discussions.
Vous pouvez soit installer directement depuis pip :
pip install git+https://github.com/hivenetwork-ai/hive-agent-py.git@main
Ou ajoutez-le à votre fichier exigences.txt :
hive-agent @ git+https://github.com/hivenetwork-ai/hive-agent-py@main
Pour installer avec les dépendances web3 facultatives, vous pouvez les spécifier comme suit :
pip install git+https://github.com/hivenetwork-ai/hive-agent-py.git@main#egg=hive-agent[web3]
Ou ajoutez-le à votre fichier exigences.txt :
hive-agent[web3] @ git+https://github.com/hivenetwork-ai/hive-agent-py@main
Vous devez spécifier un OPENAI_API_KEY
dans un fichier .env de ce répertoire.
Faites une copie du fichier .env.example et renommez-le en .env .
Pour utiliser un fichier de configuration avec votre HiveAgent
, procédez comme suit :
Créez un fichier de configuration :
hive_config.toml
) dans le répertoire de votre projet. (Voir hive_config_example.toml).Créez un contexte SDK :
from hive_agent . sdk_context import SDKContext
sdk_context = SDKContext ( config_path = "./hive_config.toml" )
Spécifiez le chemin de configuration :
HiveAgent
, fournissez le chemin relatif ou absolu de votre fichier de configuration. 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
)
Importez d’abord la classe HiveAgent
:
from hive_agent import HiveAgent
Chargez vos variables d'environnement :
from dotenv import load_dotenv
load_dotenv ()
Créez ensuite une instance HiveAgent :
my_agent = HiveAgent (
name = "my_agent" ,
functions = [],
instruction = "your instructions for this agent's goal" ,
)
Ensuite, exécutez votre agent :
my_agent . run ()
Enfin, appelez le point de terminaison de l'API, /api/v1/chat
, pour voir le résultat :
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?" } ] } '
Vous pouvez créer des outils qui aident votre agent à gérer des tâches plus complexes. Voici un exemple :
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.
"""
Vous pouvez créer un essaim d’agents pour collaborer sur des tâches complexes. Voici un exemple de configuration et d'utilisation d'un essaim :
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 ())
Vous pouvez ajouter des outils de récupération pour créer des intégrations vectorielles et récupérer des informations sémantiques. Il créera un index vectoriel pour chaque document PDF dans le dossier « hive-agent-data/files/user » et pourra filtrer les fichiers avec le paramètre requirejs_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?" } ] }'
```
"""
Les utilisateurs de votre agent/essaim ne connaissent pas toujours ses capacités. Fournir des exemples d’invites leur permet d’explorer ce que vous avez construit. Voici comment ajouter des exemples d'invites qu'ils peuvent utiliser avant de s'engager à utiliser votre agent/essaim.
Dans votre fichier hive_config.toml, créez une entrée de niveau supérieur appelée [sample_prompts]
et ajoutez un nouveau tableau aux prompts
clés comme ceci :
[ 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? "
]
Voir ./hive_config_example.toml pour un exemple de fichier de configuration.
Le didacticiel complet peut être trouvé sur ./tutorial.md.
Si vous souhaitez contribuer à la base de code, vous devrez configurer votre environnement de développement. Suivez ces étapes :
OPENAI_API_KEY
d'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
Fichier de rapports tests/htmlcov/index.html
Ouvrez http://localhost:8000/docs avec votre navigateur pour voir l'interface utilisateur Swagger de l'API.
https://swarmzero.ai