Skip to main content

Hybrid Local-Cloud QA Pipeline for LangSmith Thread Analysis

Project description

Geniable

Hybrid Local-Cloud QA Pipeline for LangSmith Thread Analysis

Geniable analyzes your LangSmith conversation threads for quality issues, performance problems, and errors—then creates tickets in Jira or Notion automatically.

Features

  • Thread Analysis - Fetch and analyze threads from your LangSmith annotation queue
  • Issue Detection - Identify performance, quality, security, and UX issues
  • Ticket Creation - Create standardized issue tickets in Jira or Notion
  • Claude Code Integration - Interactive analysis via /analyze-latest command
  • CI/CD Support - Automated analysis for pipelines using Anthropic API
  • State Tracking - Avoids reprocessing already-analyzed threads

Installation

pip install geniable

Requirements: Python 3.11+


Quick Start

1. Login

geni login

Authenticate with your email and password. Tokens are stored securely.

2. Initialize

geni init

Interactive wizard that configures:

  • LangSmith API credentials and annotation queue
  • Issue tracker (Jira, Notion, or none)
  • Claude Code integration (optional)

3. Analyze

geni analyze-latest

Fetches unanalyzed threads and launches the Geni Analyzer for interactive analysis.


Commands

Authentication

Command Description
geni login Login to Geniable
geni logout Logout and clear tokens
geni whoami Show current user

Configuration

Command Description
geni init Interactive setup wizard
geni configure --show Display current configuration
geni configure --validate Test all service connections
geni configure --sync-secrets Sync credentials to cloud

Analysis

Command Description
geni analyze latest Analyze latest threads from queue
geni analyze latest --limit 10 Analyze up to 10 threads
geni analyze latest --dry-run Analyze without creating tickets
geni analyze latest --ci Automated mode for CI/CD pipelines

Tickets

Command Description
geni ticket create '<json>' Create ticket from IssueCard JSON

Utilities

Command Description
geni status Show connection status
geni stats Show processing history
geni clear-state Reset processing state
geni --version Show version

Configuration

Configuration is stored in ~/.geniable.yaml:

langsmith:
  api_key: "ls_..."
  project: "my-project"
  queue: "quality-review"

provider: "jira"  # or "notion" or "none"

jira:
  base_url: "https://company.atlassian.net"
  email: "user@company.com"
  api_token: "..."
  project_key: "PROJ"
  issue_type: "Bug"

defaults:
  report_dir: "./reports"
  log_level: "INFO"

Environment Variables

Override any config value with environment variables:

export LANGSMITH_API_KEY="ls_..."
export JIRA_API_TOKEN="..."
export ANTHROPIC_API_KEY="sk-ant-..."  # Required for --ci mode

Claude Code Integration

Geniable integrates with Claude Code for interactive analysis.

Setup

During geni init, Geniable installs:

  • Skill: .claude/commands/analyze-latest.md
  • Agent: .claude/agents/Geni Analyzer.md
  • Permissions: .claude/settings.local.json

Usage

In Claude Code, run:

/analyze-latest

The Geni Analyzer agent will:

  1. Fetch unanalyzed threads from your LangSmith queue
  2. Analyze each thread for issues (security, quality, performance, UX)
  3. Generate potential solutions for each issue
  4. Present findings and ask for ticket creation confirmation
  5. Create tickets in Jira/Notion for approved issues

Usage Modes

Interactive Mode (Default)

geni analyze-latest

Launches Claude Code for real-time, interactive analysis. Best for development and debugging.

CI/CD Mode

export ANTHROPIC_API_KEY="sk-ant-..."
geni analyze-latest --ci

Automated analysis using Anthropic API directly. Best for scheduled pipelines.

Report-Only Mode

geni analyze-latest --dry-run

Generates reports without creating tickets. Best for previewing analysis.


Reports

Analysis reports are saved to ./reports/ (configurable):

reports/
├── processing_state.json          # Tracks processed threads
├── Thread-ProjectName-abc123.md   # Individual thread reports
└── analysis_report_20250125.md    # Batch analysis reports

Issue Detection

The analyzer identifies these issue types:

Category Examples Priority
Security Data exposure, leaked internals, auth issues Critical/High
Quality Incomplete responses, hallucinations, poor UX High
Performance Slow response (>30s), high tokens (>50K) High/Medium
Bug Errors, exceptions, failures High

Troubleshooting

"Authentication required"

geni login

"Configuration file not found"

geni init

Service validation failures

geni configure --validate

Reset processing state

To reprocess all threads:

geni clear-state -y

Debug mode

geni analyze-latest --verbose

Development

# Install dev dependencies
pip install -e ".[dev]"

# Quality checks
make lint        # Ruff linting
make format      # Black + isort
make typecheck   # Mypy

# Testing
make test        # All tests with coverage
make test-unit   # Unit tests only

Architecture

┌─────────────────────────────────────────────────────────────┐
│                       LOCAL (geniable/)                      │
│  CLI → Agent → API Clients → AWS Cloud Services             │
└─────────────────────┬───────────────────────────────────────┘
                      │ REST API + Cognito Auth
┌─────────────────────▼───────────────────────────────────────┐
│                    AWS CLOUD                                 │
│  ┌─────────────────────────┐   ┌──────────────────────────┐ │
│  │ Integration Service     │   │ Evaluation Service       │ │
│  │ • /threads/annotated    │   │ • /evaluations/discovery │ │
│  │ • /threads/{id}/details │   │ • /evaluations/execute   │ │
│  │ • /integrations/ticket  │   │                          │ │
│  └─────────────────────────┘   └──────────────────────────┘ │
│                                                              │
│  DynamoDB (state) + Secrets Manager (credentials)           │
└──────────────────────────────────────────────────────────────┘

License

MIT


Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

geniable-2.8.0.tar.gz (141.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

geniable-2.8.0-py3-none-any.whl (159.5 kB view details)

Uploaded Python 3

File details

Details for the file geniable-2.8.0.tar.gz.

File metadata

  • Download URL: geniable-2.8.0.tar.gz
  • Upload date:
  • Size: 141.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for geniable-2.8.0.tar.gz
Algorithm Hash digest
SHA256 80baef18a9eec64d8f888a04bbda44862dc5f949ced0fc1ff227ef644db989d1
MD5 0a2bcfe0bf7efc728f56b7ecfe2dbded
BLAKE2b-256 28234233b20754d691ca80f1362ec675f5cc5b541f89153895c8fdefc9a00d85

See more details on using hashes here.

File details

Details for the file geniable-2.8.0-py3-none-any.whl.

File metadata

  • Download URL: geniable-2.8.0-py3-none-any.whl
  • Upload date:
  • Size: 159.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for geniable-2.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e144bf0bb0e26c3e183a5bf8814a865153299dd9bdaf7d9bb312209d3948bb2b
MD5 f5f958ad9ca924d10212ac5f3b21e1f2
BLAKE2b-256 a0828815cfa8a6acd5611c89eef1bfd3dc342b4bda3b5b9e75e4f98c8a6163c3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page