이 라이브러리는 Hive Agent를 생성하고 실행하는 쉬운 방법을 제공합니다.
지원과 토론을 위해 Discord 커뮤니티에 참여하세요.
pip에서 직접 설치할 수 있습니다.
pip install git+https://github.com/hivenetwork-ai/hive-agent-py.git@main
또는 요구사항.txt 파일에 추가하세요.
hive-agent @ git+https://github.com/hivenetwork-ai/hive-agent-py@main
선택적 web3 종속성을 설치하려면 다음과 같이 지정할 수 있습니다.
pip install git+https://github.com/hivenetwork-ai/hive-agent-py.git@main#egg=hive-agent[web3]
또는 요구사항.txt 파일에 추가하세요.
hive-agent[web3] @ git+https://github.com/hivenetwork-ai/hive-agent-py@main
이 디렉터리의 .env 파일에 OPENAI_API_KEY
를 지정해야 합니다.
.env.example 파일의 복사본을 만들고 이름을 .env 로 바꿉니다.
HiveAgent
와 함께 구성 파일을 사용하려면 다음 단계를 따르세요.
구성 파일 만들기 :
hive_config.toml
)을 만듭니다. (hive_config_example.toml 참조)SDK 컨텍스트 생성 :
from hive_agent . sdk_context import SDKContext
sdk_context = SDKContext ( config_path = "./hive_config.toml" )
구성 경로 지정 :
HiveAgent
인스턴스를 생성할 때 구성 파일에 대한 상대 또는 절대 경로를 제공합니다. 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
)
먼저 HiveAgent
클래스를 가져옵니다.
from hive_agent import HiveAgent
환경 변수를 로드합니다.
from dotenv import load_dotenv
load_dotenv ()
그런 다음 HiveAgent 인스턴스를 만듭니다.
my_agent = HiveAgent (
name = "my_agent" ,
functions = [],
instruction = "your instructions for this agent's goal" ,
)
그런 다음 에이전트를 실행합니다.
my_agent . run ()
마지막으로 API 엔드포인트 /api/v1/chat
호출하여 결과를 확인하세요.
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?" } ] } '
에이전트가 더 복잡한 작업을 처리하는 데 도움이 되는 도구를 만들 수 있습니다. 예는 다음과 같습니다.
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.
"""
복잡한 작업을 공동으로 수행하기 위해 에이전트 떼를 만들 수 있습니다. 다음은 떼를 설정하고 사용하는 방법에 대한 예입니다.
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 ())
검색 도구를 추가하여 벡터 임베딩을 생성하고 의미 체계 정보를 검색할 수 있습니다. 'hive-agent-data/files/user' 폴더 아래의 모든 PDF 문서에 대한 벡터 인덱스를 생성하고 필수_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?" } ] }'
```
"""
에이전트/군집의 사용자는 항상 그 능력에 익숙하지 않을 수 있습니다. 샘플 프롬프트를 제공하면 귀하가 구축한 것을 탐색할 수 있습니다. 에이전트/군집을 사용하기로 결정하기 전에 사용할 수 있는 샘플 프롬프트를 추가하는 방법은 다음과 같습니다.
hive_config.toml 파일에서 [sample_prompts]
라는 최상위 항목을 생성하고 다음과 같이 키 prompts
에 새 배열을 추가합니다.
[ 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? "
]
예제 구성 파일은 ./hive_config_example.toml을 참조하세요.
전체 튜토리얼은 ./tutorial.md에서 찾을 수 있습니다.
코드베이스에 기여하려면 개발 환경을 설정해야 합니다. 다음 단계를 따르세요.
OPENAI_API_KEY
curl -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
보고서 파일 tests/htmlcov/index.html
API의 Swagger UI를 보려면 브라우저에서 http://localhost:8000/docs를 엽니다.
https://swarmzero.ai