| |
| """ |
| 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_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""" |
| |
| |
| 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) |
| |
| |
| print("Loading agent configuration...") |
| system_prompt = load_agent_config() |
| print("✓ Agent configuration loaded\n") |
| |
| |
| 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() |
| |
| |
| 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() |
| |
| |
| 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() |
|
|
|
|