ITADN
openscientist-io/openscientist
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

OpenScientist:用于新颖发现的科学假设智能体

一个从科学数据中生成并测试假设的自主 AI 科学家。

实时实例:openscientist.io

概述

OpenScientist 是一个领域无关的自主发现智能体,它能够:

  • 接收数据文件和研究问题
  • 自主运行 N 次迭代
  • 生成假设、测试它们、检索文献
  • 生成包含发现结果和机制见解的最终报告

功能

核心能力

  • 自主发现:使用智能体编码助手运行迭代式假设测试循环
  • 领域无关:适用于基因组学、转录组学、蛋白质组学、代谢组学及其他科学数据
  • 基于文献:在 PubMed 中检索机制见解
  • 多提供商支持:支持通过 Google Vertex AI、CBORG、AWS Bedrock 或 Azure AI Foundry 访问模型
  • 成本跟踪:具有提供商特定成本 API 的项目级预算监控
  • 沙箱执行:用于数据分析的安全 Python 代码执行

技能系统

  • 工作流技能:假设生成、结果解释、优先级排序、停止标准
  • 领域技能:代谢组学、基因组学/转录组学、结构生物学、数据科学/统计学

架构

  • MCP Tools: 通过 Model Context Protocol 提供工具
    • execute_code: 运行 Python 分析
    • search_pubmed: 搜索文献
    • update_knowledge_state: 记录发现
    • run_phenix_tool, compare_structures, parse_alphafold_confidence (可选,需要 Phenix)
  • Knowledge State: 基于 JSON 的状态跟踪,用于发现结果和文献
  • Job Manager: 支持多任务,具备队列和生命周期管理功能
  • Web Interface: 基于 NiceGUI 的界面,用于任务提交和监控

Structural Biology Support (Optional)

OpenScientist 支持 Phenix integration 用于蛋白质结构分析:

  • 结构比较和叠加
  • 验证指标(clash score、backbone geometry)
  • AlphaFold 置信度分析
  • 请参阅 docs/PHENIX_SETUP.md 获取安装说明

Quick Start

Prerequisites

  • Python 3.12+
  • Docker (用于容器化部署)
  • uv 包管理器
  • 以下任一方式用于模型访问:
    • CBORG: 来自 CBORG 的 API 令牌
    • Vertex AI: 已启用 Vertex AI 的 GCP 项目 (请参阅 docs/VERTEX_SETUP.md)
    • AWS Bedrock: 具有 Bedrock 访问权限的 AWS 账户 (见下文)
    • Azure AI Foundry: 具有 Foundry 资源的 Azure 订阅 (见下文)

Installation

# Clone the repository
git clone <repository-url>
cd openscientist

# Create .env file (copy from example and configure)
cp .env.example .env
# Edit .env with your provider credentials

# Build and start
make build
make start

访问 UI

在浏览器中打开 http://localhost:8080

用法

  1. 上传您的数据文件(可选 - 支持 CSV、TSV、Excel、Parquet、JSON、PDB、mmCIF、FASTA、图像以及许多其他文件类型)
  2. 输入您的研究问题
  3. 设置最大迭代次数(例如,10)
  4. 点击“开始发现”
  5. 监控进度并查看结果

项目结构

openscientist/
├── src/openscientist/            # Core Python package
│   ├── agent/             # AgentExecutor protocol and ClaudeCodeAgent
│   ├── job/               # Job lifecycle, scheduling, and types
│   ├── orchestrator/      # Discovery orchestration (setup, iteration, report)
│   ├── providers/         # Model provider integrations
│   │   ├── base.py        # Base provider interface
│   │   ├── messaging.py   # Consolidated send_message / client factory
│   │   ├── cborg.py       # CBORG provider
│   │   ├── vertex.py      # Google Vertex AI provider
│   │   ├── bedrock.py     # AWS Bedrock provider
│   │   └── foundry.py     # Azure AI Foundry provider
│   ├── tools/             # @tool-decorated callables for agent
│   ├── mcp_server/        # MCP tools server
│   ├── web_app.py         # NiceGUI web interface
│   ├── knowledge_state.py # JSON-based state storage
│   ├── code_executor.py   # Sandboxed Python execution
│   └── literature.py      # PubMed search
├── CLAUDE.md              # Development guide and system prompt
├── jobs/                  # Job results (created at runtime)
├── Dockerfile             # Docker image definition
├── docker-compose.yml     # Container orchestration
└── Makefile               # Build and deployment commands

配置

模型提供商

OpenScientist 支持多个模型提供商。请选择一个并在您的 .env 文件中进行配置:

选项 1:CBORG(劳伦斯伯克利国家实验室)

# Provider selection
OPENSCIENTIST_PROVIDER=cborg

# CBORG credentials
ANTHROPIC_AUTH_TOKEN=your-cborg-token
ANTHROPIC_BASE_URL=https://api.cborg.lbl.gov

成本跟踪:通过 CBORG API 实时进行(/key/info, /user/daily/activity

选项 2:Google Vertex AI

# Provider selection
OPENSCIENTIST_PROVIDER=vertex

# Vertex AI configuration
ANTHROPIC_VERTEX_PROJECT_ID=your-gcp-project
GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
CLOUD_ML_REGION=us-east5
VERTEX_REGION_CLAUDE_4_5_SONNET=us-east5
VERTEX_REGION_CLAUDE_4_5_HAIKU=us-east5

# BigQuery billing export (for cost tracking)
GCP_BILLING_ACCOUNT_ID=XXXXXX-YYYYYY-ZZZZZZ

成本跟踪:通过 GCP BigQuery 账单导出(延迟 1-6 小时) 设置指南:请参阅 docs/VERTEX_SETUP.md 获取详细说明

选项 3:AWS Bedrock

# Provider selection
OPENSCIENTIST_PROVIDER=bedrock

# AWS configuration
AWS_REGION=us-east-1

# Authentication (choose one):
# Option A: Access keys
AWS_ACCESS_KEY_ID=your-access-key-id
AWS_SECRET_ACCESS_KEY=your-secret-access-key

# Option B: AWS profile
# AWS_PROFILE=your-profile-name

# Option C: Bedrock API key
# AWS_BEARER_TOKEN_BEDROCK=your-bedrock-api-key

成本跟踪:通过 AWS Cost Explorer(24-48 小时延迟) 注意:需要 bedrock:InvokeModelce:GetCostAndUsage 的 IAM 权限

选项 4:Azure AI Foundry(Microsoft Foundry)

# Provider selection
OPENSCIENTIST_PROVIDER=foundry

# Azure resource configuration
ANTHROPIC_FOUNDRY_RESOURCE=your-resource-name
# Or use full URL:
# ANTHROPIC_FOUNDRY_BASE_URL=https://your-resource.services.ai.azure.com/anthropic

# Authentication (choose one):
# Option A: API key (recommended for testing)
ANTHROPIC_FOUNDRY_API_KEY=your-azure-api-key

# Option B: Azure Entra ID (automatic - no API key needed)
# Run: az login
# Or configure managed identity for production

# Model deployment names (optional - defaults shown)
ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-4-5
ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5
ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-6

# For cost tracking (optional):
AZURE_SUBSCRIPTION_ID=your-subscription-id

成本跟踪:通过 Azure Cost Management API(实现中) 设置指南:参见 Claude Code Foundry 文档 注意:需要 Azure RBAC 权限(Azure AI UserCognitive Services User 角色)

预算控制

设置应用级预算限制(可选):

# Maximum total spend across all jobs
MAX_PROJECT_SPEND_TOTAL_USD=1000

# Maximum spend in last 24 hours
MAX_PROJECT_SPEND_24H_USD=50

预算限制在作业创建前进行检查。Web UI 显示:

  • 项目总花费
  • 近期花费(最近 24 小时)
  • 剩余预算(如果提供商支持)

其他设置

# Dev mode - enables mock OAuth login for development
OPENSCIENTIST_DEV_MODE=true

作业管理器设置

src/openscientist/web_app.py 中:

  • max_concurrent:最大并发作业数(默认:1)
  • jobs_dir:作业数据目录(默认:jobs/

旧版引导(文件系统 -> 数据库)

如果磁盘上存在数据库之前的作业,请运行:

docker compose exec openscientist python -m openscientist.job_manager bootstrap --jobs-dir /app/jobs --dry-run
docker compose exec openscientist python -m openscientist.job_manager bootstrap --jobs-dir /app/jobs

所有权未解决的作业将以孤儿状态迁移(owner_id=NULL), 并可在之后从管理界面进行分配。

开发

请参阅 CONTRIBUTING.md 了解开发环境搭建、测试和部署。

文档

作者

Justin Reese justinreese@lbl.gov