Diese Bibliothek bietet Ihnen eine einfache Möglichkeit, Hive-Agenten zu erstellen und auszuführen.
Treten Sie unserer Discord-Community bei, um Unterstützung und Diskussionen zu erhalten.
Sie können entweder direkt von pip aus installieren:
pip install git+https://github.com/hivenetwork-ai/hive-agent-py.git@main
Oder fügen Sie es Ihrer Datei „requirements.txt“ hinzu:
hive-agent @ git+https://github.com/hivenetwork-ai/hive-agent-py@main
Zur Installation mit den optionalen Web3-Abhängigkeiten können Sie diese wie folgt angeben:
pip install git+https://github.com/hivenetwork-ai/hive-agent-py.git@main#egg=hive-agent[web3]
Oder fügen Sie es Ihrer Datei „requirements.txt“ hinzu:
hive-agent[web3] @ git+https://github.com/hivenetwork-ai/hive-agent-py@main
Sie müssen einen OPENAI_API_KEY
in einer .env- Datei in diesem Verzeichnis angeben.
Erstellen Sie eine Kopie der Datei .env.example und benennen Sie sie in .env um.
Um eine Konfigurationsdatei mit Ihrem HiveAgent
zu verwenden, gehen Sie folgendermaßen vor:
Erstellen Sie eine Konfigurationsdatei :
hive_config.toml
) in Ihrem Projektverzeichnis. (Siehe hive_config_example.toml).Erstellen Sie einen SDK-Kontext :
from hive_agent . sdk_context import SDKContext
sdk_context = SDKContext ( config_path = "./hive_config.toml" )
Geben Sie den Konfigurationspfad an :
HiveAgent
-Instanz den relativen oder absoluten Pfad zu Ihrer Konfigurationsdatei an. 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
)
Importieren Sie zunächst die HiveAgent
-Klasse:
from hive_agent import HiveAgent
Laden Sie Ihre Umgebungsvariablen:
from dotenv import load_dotenv
load_dotenv ()
Erstellen Sie dann eine HiveAgent-Instanz:
my_agent = HiveAgent (
name = "my_agent" ,
functions = [],
instruction = "your instructions for this agent's goal" ,
)
Führen Sie dann Ihren Agenten aus:
my_agent . run ()
Rufen Sie abschließend den API-Endpunkt /api/v1/chat
auf, um das Ergebnis anzuzeigen:
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?" } ] } '
Sie können Tools erstellen, die Ihrem Agenten bei der Bewältigung komplexerer Aufgaben helfen. Hier ist ein Beispiel:
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.
"""
Sie können einen Schwarm von Agenten erstellen, um bei komplexen Aufgaben zusammenzuarbeiten. Hier ist ein Beispiel für die Einrichtung und Verwendung eines Schwarms:
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 ())
Sie können Retriever-Tools hinzufügen, um Vektoreinbettungen zu erstellen und semantische Informationen abzurufen. Es erstellt einen Vektorindex für jedes PDF-Dokument im Ordner „hive-agent-data/files/user“ und kann Dateien mit dem Parameter „required_exts“ filtern.
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?" } ] }'
```
"""
Benutzer Ihres Agenten/Schwarms sind möglicherweise nicht immer mit seinen Fähigkeiten vertraut. Durch die Bereitstellung von Beispielaufforderungen können sie erkunden, was Sie erstellt haben. Hier erfahren Sie, wie Sie Beispielaufforderungen hinzufügen, die sie verwenden können, bevor sie sich zur Verwendung Ihres Agenten/Schwarms verpflichten.
Erstellen Sie in Ihrer hive_config.toml-Datei einen Eintrag der obersten Ebene mit dem Namen [sample_prompts]
und fügen Sie ein neues Array wie folgt zu den prompts
hinzu:
[ 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? "
]
Eine Beispielkonfigurationsdatei finden Sie unter ./hive_config_example.toml.
Das vollständige Tutorial finden Sie unter ./tutorial.md.
Wenn Sie zur Codebasis beitragen möchten, müssen Sie Ihre Entwicklungsumgebung einrichten. Befolgen Sie diese Schritte:
OPENAI_API_KEY
von OpenAIcurl -sSL https://install.python-poetry.org | python3 -
export PATH= " $HOME /.local/bin: $PATH "
poetry shell
poetry install --no-root
tests/
befinden: cd tests/
pytest
pytest tests/path/to/test_module.py
pytest -v
pytest -s
pip install coverage pytest-cov
pytest --cov --cov-report=html
Berichtet über die Datei tests/htmlcov/index.html
Öffnen Sie http://localhost:8000/docs mit Ihrem Browser, um die Swagger-Benutzeroberfläche der API anzuzeigen.
https://swarmzero.ai