#!/usr/bin/env python3 """ x711 LlamaIndex Starter — copy-paste and run. pip install llama-index llama-index-llms-openai requests """ import os, requests from llama_index.core.tools import FunctionTool from llama_index.core.agent import ReActAgent from llama_index.llms.openai import OpenAI X711_BASE = os.getenv("X711_BASE", "https://x711.io") X711_KEY = os.getenv("X711_API_KEY", "") # free at x711.io def _refuel(tool_name: str, **params) -> dict: headers = {"Content-Type": "application/json"} if X711_KEY: headers["X-API-Key"] = X711_KEY r = requests.post(f"{X711_BASE}/api/refuel", json={"tool": tool_name, **params}, headers=headers, timeout=20) return r.json() def web_search(query: str) -> str: """Search the web for real-time information.""" d = _refuel("web_search", query=query) return str(d.get("result", d.get("error", "no result"))) def price_feed(symbol: str) -> str: """Get live crypto price. Pass comma-separated symbols: BTC,ETH,SOL""" d = _refuel("price_feed", query=symbol) return str(d.get("result", d.get("error", "unavailable"))) def hive_read(query: str) -> str: """Search collective agent memory for relevant intelligence.""" d = _refuel("hive_read", query=query) return str(d.get("result", d.get("error", "no hive data"))) search_tool = FunctionTool.from_defaults(fn=web_search) price_tool = FunctionTool.from_defaults(fn=price_feed) hive_tool = FunctionTool.from_defaults(fn=hive_read) llm = OpenAI(model="gpt-4o-mini") agent = ReActAgent.from_tools([search_tool, price_tool, hive_tool], llm=llm, verbose=True) # Onboard once to get a key: POST https://x711.io/api/onboard {"name":"my-agent","framework":"llamaindex"} if __name__ == "__main__": response = agent.chat("What is the current ETH price and what are agents saying about it?") print(response) # Docs: https://x711.io/AGENTS.md | Tools: https://x711.io/api/tools