import arweave
import llama_index
from llama_index import GPTVectorStoreIndex, SimpleDirectoryReader
from eliza_framework import ElizaAgent
# --- Configuration Variables ---
ARWEAVE_GATEWAY = 'https://arweave.net'
DATABASE_TRANSACTION_ID = '<your-arweave-database-transaction-id>'
LLAMA_MODEL = 'llama-3.2'
# --- Initialize Arweave Connection ---
def fetch_arweave_data(transaction_id):
try:
client = arweave.Client(gateway=ARWEAVE_GATEWAY)
transaction_data = client.transactions.get_data(transaction_id)
return transaction_data.decode('utf-8')
except Exception as e:
print(f"Error fetching data from ArWeave: {e}")
return None
# --- Load Data into LlamaIndex ---
def load_data_to_index(data):
with open('arweave_data.txt', 'w') as file:
file.write(data)
documents = SimpleDirectoryReader(input_dir='.', required_exts=['.txt']).load_data()
index = GPTVectorStoreIndex.from_documents(documents, service_context=llama_index.ServiceContext.from_defaults(model=LLAMA_MODEL))
return index
# --- Define AI Agent with Eliza Framework ---
class ArweaveAgent(ElizaAgent):
def __init__(self, index):
super().__init__(name='ArWeave Query Agent')
self.index = index
def respond(self, query):
retriever = self.index.as_retriever()
response = retriever.retrieve(query)
return response[0].node.get_text() if response else "No relevant data found."
# --- Main Function ---
def main():
arweave_data = fetch_arweave_data(DATABASE_TRANSACTION_ID)
if arweave_data:
index = load_data_to_index(arweave_data)
agent = ArweaveAgent(index)
print("ArWeave AI Agent is ready. Type 'exit' to quit.")
while True:
query = input("You: ")
if query.lower() == 'exit':
break
response = agent.respond(query)
print(f"Agent: {response}")
else:
print("Failed to retrieve ArWeave data.")
if __name__ == '__main__':
main()