1 line
4.8 KiB
JSON
1 line
4.8 KiB
JSON
{"repo": "adoptai/zapi", "files": {"examples/llm_keys_usage.py": {"40fb34a773e87ad6b0fd2259a4ed9eb89dc5f4f7": {"t": 1785674421.677609, "n": 4463, "h": "7df683fb57bc6030", "c": "\"\"\"\nExample demonstrating LLM API key management with ZAPI.\n\nThis shows how to securely provide LLM API keys for the 4 main supported providers.\nKeys will be encrypted and transmitted to the adopt.ai discovery service.\n\nSupported providers: Anthropic, OpenAI, Google, Groq\n\"\"\"\n\nfrom zapi import ZAPI, LLMProvider\n\n\ndef main():\n # Example 1: Initialize ZAPI with single LLM key in constructor (Anthropic primary)\n print(\"Example 1: ZAPI with single LLM key in constructor (Anthropic primary)\")\n\n # Single key approach - one provider per client instance\n z = ZAPI(\n client_id=\"YOUR_CLIENT_ID\",\n secret=\"YOUR_SECRET\",\n llm_provider=\"anthropic\", # Primary supported provider\n llm_api_key=\"sk-ant-your-anthropic-key-here\",\n )\n\n print(f\"Configured provider: {z.get_llm_provider()}\")\n print(f\"Has LLM key: {z.has_llm_key()}\")\n\n # Launch browser and capture session\n session = z.launch_browser(url=\"https://app.example.com\", headless=False)\n input(\"Navigate around the app, then press ENTER to continue...\")\n\n # Export HAR with encrypted LLM key\n session.dump_logs(\"example_with_key.har\")\n\n # Upload to adopt.ai with encrypted key\n z.upload_har(\"example_with_key.har\")\n\n session.close()\n print(\"✓ Session completed with encrypted LLM key included\\n\")\n\n # Example 2: Set LLM key after initialization\n print(\"Example 2: Setting LLM key after initialization\")\n\n z2 = ZAPI(client_id=\"YOUR_CLIENT_ID\", secret=\"YOUR_SECRET\")\n print(f\"Initially has key: {z2.has_llm_key()}\")\n\n # Add key later - showcasing one of the 4 main providers\n z2.set_llm_key(\"anthropic\", \"sk-ant-another-key-here\")\n\n print(f\"After setting key: {z2.has_llm_key()}\")\n print(f\"Configured provider: {z2.get_llm_provider()}\")\n\n # Example 3: Multiple provider support (single provider per client)\n print(\"\\nExample 3: Using different providers (create separate clients)\")\n\n # OpenAI example\n z3a = ZAPI(client_id=\"YOUR_CLIENT_ID\", secret=\"YOUR_SECRET\")\n z3a.set_llm_key(\"openai\", \"sk-your-openai-key-here\")\n print(f\"OpenAI client provider: {z3a.get_llm_provider()}\")\n\n # Groq example\n z3b = ZAPI(client_id=\"YOUR_CLIENT_ID\", secret=\"YOUR_SECRET\")\n z3b.set_llm_key(\"groq\", \"gsk_your-groq-key-here\")\n print(f\"Groq client provider: {z3b.get_llm_provider()}\")\n\n # Google example\n z3c = ZAPI(client_id=\"YOUR_CLIENT_ID\", secret=\"YOUR_SECRET\")\n z3c.set_llm_key(\"google\", \"your-google-api-key-here\")\n print(f\"Google client provider: {z3c.get_llm_provider()}\")\n\n # Example 4: Working without LLM keys (backward compatibility)\n print(\"\\nExample 4: Working without LLM keys (backward compatibility)\")\n\n z4 = ZAPI(client_id=\"YOUR_CLIENT_ID\", secret=\"YOUR_SECRET\")\n print(f\"Has LLM key: {z4.has_llm_key()}\")\n\n # This will work exactly as before - no encrypted keys sent\n session4 = z4.launch_browser(url=\"https://app.example.com\")\n session4.wait_for(timeout=1000)\n session4.dump_logs(\"example_no_keys.har\")\n z4.upload_har(\"example_no_keys.har\") # byok_enabled: false\n session4.close()\n print(\"✓ Session completed without LLM keys (legacy mode)\")\n\n # Example 5: Show all 4 supported providers\n print(\"\\nExample 5: All 4 main supported LLM providers\")\n print(f\"All supported providers: {list(LLMProvider.get_all_providers())}\")\n\n from zapi.providers import get_supported_providers_info, is_primary_provider\n\n providers_info = get_supported_providers_info()\n for provider_name, info in providers_info.items():\n support_level = \"🔥 PRIMARY\" if is_primary_provider(provider_name) else \"⭐ MAIN\"\n print(f\"- {info['display_name']}: {support_level} - {info['description']}\")\n\n print(\"\\n💡 ZAPI supports 4 main providers: Anthropic, OpenAI, Google, Groq\")\n print(\" Each client handles one provider's key for security and simplicity.\")\n print(\" All providers have complete validation and optimized integration.\")\n\n # Example 6: Demonstrating API key format validation\n print(\"\\nExample 6: API key format validation for each provider\")\n\n key_examples = {\n \"anthropic\": \"sk-ant-api03-example-key-here\",\n \"openai\": \"sk-your-openai-key-here\",\n \"groq\": \"gsk_your-groq-key-here\",\n \"google\": \"your-google-api-key-here\",\n }\n\n for provider, example_key in key_examples.items():\n print(f\"- {provider.title()}: {example_key[:15]}...\")\n\n\nif __name__ == \"__main__\":\n main()\n"}}}} |