Spaces:
Runtime error
Runtime error
| #!/usr/bin/env python3 | |
| """ | |
| Lineage Graph Extractor - Integration Example | |
| This script demonstrates how to use the Lineage Graph Extractor agent | |
| programmatically with the Anthropic API. | |
| Usage: | |
| python integration_example.py | |
| """ | |
| import os | |
| from anthropic import Anthropic | |
| from dotenv import load_dotenv | |
| # Load environment variables from .env file | |
| load_dotenv() | |
| def load_agent_config(): | |
| """Load the agent configuration from memories/agent.md""" | |
| config_path = os.path.join(os.path.dirname(__file__), "memories", "agent.md") | |
| with open(config_path, "r") as f: | |
| return f.read() | |
| def extract_lineage(client, system_prompt, user_message): | |
| """ | |
| Send a lineage extraction request to the agent. | |
| Args: | |
| client: Anthropic client instance | |
| system_prompt: Agent system prompt | |
| user_message: User's lineage extraction request | |
| Returns: | |
| Agent's response text | |
| """ | |
| response = client.messages.create( | |
| model="claude-3-5-sonnet-20241022", | |
| max_tokens=4000, | |
| system=system_prompt, | |
| messages=[{ | |
| "role": "user", | |
| "content": user_message | |
| }] | |
| ) | |
| return response.content[0].text | |
| def main(): | |
| """Main function demonstrating agent usage""" | |
| # Initialize Anthropic client | |
| api_key = os.getenv("ANTHROPIC_API_KEY") | |
| if not api_key: | |
| print("Error: ANTHROPIC_API_KEY not found in environment variables.") | |
| print("Please set it in your .env file.") | |
| return | |
| client = Anthropic(api_key=api_key) | |
| # Load agent configuration | |
| print("Loading agent configuration...") | |
| system_prompt = load_agent_config() | |
| print("✓ Agent configuration loaded\n") | |
| # Example 1: Simple greeting to test agent | |
| print("=" * 60) | |
| print("Example 1: Testing agent connection") | |
| print("=" * 60) | |
| response = extract_lineage( | |
| client, | |
| system_prompt, | |
| "Hello! What can you help me with?" | |
| ) | |
| print(response) | |
| print() | |
| # Example 2: Extract lineage from sample metadata | |
| print("=" * 60) | |
| print("Example 2: Extract lineage from sample metadata") | |
| print("=" * 60) | |
| sample_metadata = """ | |
| { | |
| "tables": [ | |
| { | |
| "name": "raw_orders", | |
| "type": "source", | |
| "description": "Raw order data from API" | |
| }, | |
| { | |
| "name": "raw_customers", | |
| "type": "source", | |
| "description": "Raw customer data from database" | |
| }, | |
| { | |
| "name": "stg_orders", | |
| "type": "staging", | |
| "description": "Cleaned and standardized orders", | |
| "depends_on": ["raw_orders"] | |
| }, | |
| { | |
| "name": "stg_customers", | |
| "type": "staging", | |
| "description": "Cleaned and standardized customers", | |
| "depends_on": ["raw_customers"] | |
| }, | |
| { | |
| "name": "fct_orders", | |
| "type": "fact", | |
| "description": "Order facts with customer data", | |
| "depends_on": ["stg_orders", "stg_customers"] | |
| } | |
| ] | |
| } | |
| """ | |
| response = extract_lineage( | |
| client, | |
| system_prompt, | |
| f"Extract lineage from this metadata and create a Mermaid diagram:\n\n{sample_metadata}" | |
| ) | |
| print(response) | |
| print() | |
| # Example 3: BigQuery extraction (requires credentials) | |
| if os.getenv("GOOGLE_CLOUD_PROJECT"): | |
| print("=" * 60) | |
| print("Example 3: BigQuery lineage extraction") | |
| print("=" * 60) | |
| project_id = os.getenv("GOOGLE_CLOUD_PROJECT") | |
| response = extract_lineage( | |
| client, | |
| system_prompt, | |
| f"Extract lineage from BigQuery project: {project_id}, dataset: analytics" | |
| ) | |
| print(response) | |
| else: | |
| print("Skipping BigQuery example (GOOGLE_CLOUD_PROJECT not set)") | |
| print("\n" + "=" * 60) | |
| print("Examples complete!") | |
| print("=" * 60) | |
| if __name__ == "__main__": | |
| main() | |