Galileo python sdk

Polar Sponsor
爱发电 赞助
.NET 9.0

Galileo AI 平台 Python SDK 完整参考,用于评估、监控和保护 GenAI 应用,适用于构建 Python 应用。

Galileo Python SDK.

功能概述

Galileo Python SDK.是一项面向实际任务的技能,主要用于Galileo Python SDK( galileo) 为GenAI 应用软件提供统一接口—— 使 GenAI AI 平台能够进行评价,可观察性,以及运行时的守护护栏。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

核心要点

  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

Galileo Python SDK

Galileo Python SDK(galileo)为 Galileo AI 平台提供统一接口,支持大语言模型应用的评估(evaluation)、可观测性(observability)及运行时防护机制(runtime guardrails)。它支持 LLM 调用的自动追踪、自定义 Span 日志记录、评估实验(evaluation experiments),以及生产级防护能力。

SDK 版本检测

在编写任何代码前,请先检查已安装版本,以选择正确的文档参考:

import importlib.metadata, importlib.util

galileo_ver = importlib.metadata.version("galileo")        # 例如 "2.1.1"
pq_installed = importlib.util.find_spec("promptquality") is not None
pq_ver = importlib.metadata.version("promptquality") if pq_installed else None
print(f"galileo={galileo_ver}, promptquality={pq_ver}")
已安装的技术栈 应参考的文档
galileo >= 2.0(无论是否同时安装 promptquality 0.x) 本文档 — GalileoLogger、@log、galileo_context
galileo < 2.0 + promptquality >= 1.0 Promptquality 1.x Reference

注意:promptquality >= 1.0 与 galileo >= 2.0 互不兼容 —— 它们依赖不同主版本的 galileo-core。同时安装将导致依赖冲突。

其他参考文档:

  • 框架集成 — OpenAI、Anthropic、LangChain、LangGraph、CrewAI、PydanticAI 等
  • 防护指标参考 — 幻觉指数(Hallucination Index)、上下文遵循度(Context Adherence)、毒性(Toxicity)、PII、以及所有可用指标
  • 高级评估模式 — 实验(Experiments)、评估数据集(eval sets)、提示优化(prompt optimization)、评分(scoring)
  • Promptquality 1.x Reference — 针对 galileo 1.x 技术栈的 EvaluateRun、Scorers、ScorersConfiguration

安装

pip install galileo

如需使用传统提示工程接口的评估功能:

pip install promptquality

如需启用运行时防护能力:

pip install galileo-protect

快速开始

import os
from galileo import galileo_context
from galileo.openai import openai

galileo_context.init(project="my-project", log_stream="my-log-stream")

client = openai.OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))

response = client.chat.completions.create(
    messages=[{"role": "user", "content": "Explain quantum computing in one sentence."}],
    model="gpt-4o",
)

print(response.choices[0].message.content)

galileo_context.flush()

认证

请设置以下环境变量:

# .env 文件或 Shell 环境
GALILEO_API_KEY="your-api-key"            # 必填 — 来自 Galileo 控制台
GALILEO_CONSOLE_URL="https://app.galileo.ai"  # 控制台 URL(或私有部署地址)
GALILEO_PROJECT="my-project"              # 可选 — 默认项目名
GALILEO_LOG_STREAM="my-log-stream"        # 可选 — 默认日志流名
GALILEO_LOGGING_DISABLED="false"          # 可选 — 禁用日志记录

对于传统的 promptquality 包,请通过编程方式认证:

import promptquality as pq
pq.login("https://app.galileo.ai")

可观测性与追踪

初始化 Galileo 上下文

from galileo import galileo_context

galileo_context.init(project="my-project", log_stream="my-log-stream")

封装后的 OpenAI 客户端(自动日志记录)

导入 Galileo 封装的 OpenAI 客户端,即可自动追踪所有调用:

from galileo.openai import openai

client = openai.OpenAI()
response = client.chat.completions.create(
    messages=[{"role": "user", "content": "Hello"}],
    model="gpt-4o",
)

@log 装饰器

使用 @log 为函数创建 Span。支持的 Span 类型包括:workflow、llm、retriever、tool。

from galileo import log

@log
def my_workflow():
    result = call_openai()
    return result

@log(span_type="retriever")
def retrieve_documents(query: str):
    docs = vector_store.search(query)
    return docs

@log(span_type="tool")
def search_web(query: str):
    return web_api.search(query)

嵌套工作流

from galileo import log

@log
def agent_pipeline(user_input: str):
    context = retrieve_documents(user_input)
    tool_result = search_web(user_input)
    response = generate_response(user_input, context, tool_result)
    return response

@log(span_type="retriever")
def retrieve_documents(query: str):
    return ["doc1", "doc2"]

@log(span_type="tool")
def search_web(query: str):
    return "search result"

@log
def generate_response(query: str, context: list, tool_result: str):
    client = openai.OpenAI()
    return client.chat.completions.create(
        messages=[{"role": "user", "content": query}],
        model="gpt-4o",
    )

上下文管理器

将日志记录作用域限定在特定代码块内,并在退出时自动 flush:

from galileo import galileo_context

with galileo_context(project="my-project", log_stream="my-log-stream"):
    result = my_workflow()
    print(result)

刷新追踪数据

将捕获的追踪数据上传至 Galileo:

galileo_context.flush()

评估

使用 promptquality 运行实验

import promptquality as pq

pq.login("https://app.galileo.ai")

template = "Explain {{topic}} to me like I'm a 5 year old"
data = {"topic": ["Quantum Physics", "Politics", "Large Language Models"]}

pq.run(
    project_name="my-first-project",
    template=template,
    dataset=data,
    settings=pq.Settings(
        model_alias="ChatGPT (16K context)",
        temperature=0.8,
        max_tokens=400,
    ),
)

使用自定义工作流执行评估(galileo 2.x)

使用 GalileoLogger 记录用于评估的追踪数据:

from galileo import GalileoLogger

logger = GalileoLogger(project="my_project", log_stream="my_run")

eval_set = ["What are hallucinations?", "What are intrinsic hallucinations?"]
for input_text in eval_set:
    output = llm.call(input_text)
    logger.add_single_llm_span_trace(
        input=input_text,
        output=output,
        model="gpt-4o",
    )

logger.flush()

若使用 galileo < 2.0 + promptquality >= 1.0 技术栈,请使用 EvaluateRun —— 参见 Promptquality 1.x Reference。

更多内容请参阅“高级评估模式”。

防护机制 / Protect

创建防护阶段(Protection Stage)

from galileo import GalileoMetrics
from galileo.stages import create_protect_stage
from galileo_core.schemas.protect.rule import Rule, RuleOperator
from galileo_core.schemas.protect.ruleset import Ruleset
from galileo_core.schemas.protect.stage import StageType

rule = Rule(
    metric=GalileoMetrics.input_toxicity,
    operator=RuleOperator.gt,
    target_value=0.1,
)

ruleset = Ruleset(rules=[rule])

stage = create_protect_stage(
    name="toxicity-guard",
    stage_type=StageType.central,
    prioritized_rulesets=[ruleset],
    description="Block toxic input.",
)

调用运行时防护

from galileo.protect import invoke_protect, ainvoke_protect
from galileo_core.schemas.protect.payload import Payload

payload = Payload(input="User message to check.")

response = invoke_protect(payload=payload, stage_name="toxicity-guard")

# 异步调用方式
response = await ainvoke_protect(payload=payload, stage_name="toxicity-guard")

阶段类型(Stage Types)

  • 中心化阶段(Central stages) —— 由治理团队创建和管理;规则集(rulesets)在创建阶段时即已定义
  • 本地化阶段(Local stages) —— 创建时不绑定规则集;规则集由应用团队在运行时动态提供

所有可用指标请参见“防护指标参考”。

常见模式

多轮对话

from galileo import log
from galileo.openai import openai

client = openai.OpenAI()

@log
def chat(messages: list):
    response = client.chat.completions.create(
        messages=messages,
        model="gpt-4o",
    )
    return response.choices[0].message.content

messages = []
messages.append({"role": "user", "content": "What is RAG?"})
reply = chat(messages)
messages.append({"role": "assistant", "content": reply})
messages.append({"role": "user", "content": "How do I implement it?"})
reply = chat(messages)

带检索器 Span 的 RAG 流水线

from galileo import log
from galileo.openai import openai

client = openai.OpenAI()

@log(span_type="retriever")
def retrieve(query: str):
    results = vector_db.similarity_search(query, k=5)
    return [doc.page_content for doc in results]

@log
def rag_pipeline(question: str):
    context = retrieve(question)
    prompt = f"Context: {context}nnQuestion: {question}"
    response = client.chat.completions.create(
        messages=[{"role": "user", "content": prompt}],
        model="gpt-4o",
    )
    return response.choices[0].message.content

智能体工具调用(Agent Tool Calling)

from galileo import log

@log(span_type="tool")
def math_operation(a: float, b: float, op: str) -> str:
    if op == "add":
        return str(a + b)
    elif op == "multiply":
        return str(a * b)
    raise ValueError(f"Unknown op: {op}")

@log(span_type="tool")
def web_search(query: str):
    return search_api.query(query)

@log
def agent(user_input: str):
    plan = plan_actions(user_input)
    results = []
    for action in plan:
        if action.tool == "math_operation":
            results.append(math_operation(action.input))
        elif action.tool == "web_search":
            results.append(web_search(action.input))
    return synthesize(results)

最佳实践

  1. 始终通过环境变量配置认证信息:使用 GALILEO_API_KEY 和 GALILEO_CONSOLE_URL,切勿硬编码凭据。
  2. 按应用、环境或团队组织项目与日志流,以便有效管理追踪数据。
  3. 在每次请求或批量处理结束时调用 galileo_context.flush(),确保追踪数据及时上传;在 Web 服务中,应在每个请求处理器末尾执行 flush。
  4. 使用上下文管理器(with galileo_context(...))实现作用域受限的日志记录,并在退出时自动 flush。
  5. 为 Span 指定明确类型(如 retriever、tool、llm、workflow),以充分利用 Galileo 的追踪可视化能力。
  6. 优雅地处理错误 —— 将 flush() 调用包裹在 try/except 中,避免日志失败导致应用崩溃。
  7. 优先使用封装版 OpenAI 客户端(from galileo.openai import openai),实现零配置的 OpenAI 调用自动追踪。
  8. 在生产环境中启用防护指标,在幻觉、毒性内容或 PII 泄露到达终端用户前及时拦截。

资源

  • 文档: https://docs.galileo.ai
  • Python SDK 仓库: https://github.com/rungalileo/galileo-python
  • SDK 示例: https://github.com/rungalileo/sdk-examples
  • PyPI 页面: https://pypi.org/project/galileo/
  • Galileo 控制台: https://app.galileo.ai

相关专题

更多
Python Django REST Framework接口安全与认证体系实践
Python Django REST Framework接口安全与认证体系实践

本专题围绕 Django REST Framework 展开,深入讲解 API 认证、JWT 鉴权、权限控制、接口安全防护以及防攻击策略设计。通过完整后端案例,帮助开发者构建安全可靠的 Web API 服务体系。

2026.06.29

140

15

Python FastAPI异步微服务与高性能接口设计
Python FastAPI异步微服务与高性能接口设计

本专题聚焦 Python FastAPI 框架在高性能接口与微服务开发中的应用,讲解异步请求处理、依赖注入机制、路由设计、数据库异步操作以及接口性能优化策略。结合实际项目案例,帮助开发者构建高并发、低延迟的现代化后端服务架构。

2026.06.16

219

12

Python数据分析实战指南
Python数据分析实战指南

聚焦Python在数据分析领域的核心应用,涵盖Pandas、NumPy、Matplotlib等库的使用技巧、真实业务场景案例及性能优化方法。

2026.06.04

146

48

Python入门零基础通关合集
Python入门零基础通关合集

从安装环境、变量循环到函数与类,专为小白设计的手把手Python教程,配套100道实战练习题,快速掌握自动化与数据分析基础。

2026.06.03

334

26

Python 设计模式与代码架构教程合集
Python 设计模式与代码架构教程合集

以 Python 语言特性为基础,讲解经典设计模式的 Pythonic 实现方式,涵盖单例模式(模块级/元类/new)、工厂模式与注册表模式、策略模式(函数作为一等公民替代类继承)、观察者模式(信号与事件系统)、装饰器模式(语言原生支持)、代理模式(getattr 动态代理)、依赖注入(dependency-injector 库)、仓储模式(Repository Pattern)在数据层的应用,同时讲解 Python 项目的分层架构(领

2026.05.15

424

19

Python日志系统与监控告警教程大全
Python日志系统与监控告警教程大全

全面讲解 Python 应用的日志管理与监控方案,涵盖 logging 标准库的 Logger/Handler/Formatter/Filter 体系、日志级别规范与分模块配置、dictConfig / fileConfig 声明式配置、loguru 第三方库的简洁用法与结构化输出、日志轮转(RotatingFileHandler/TimedRotatingFileHandler)策略、JSON 格式结构化日志输出、ELK / Loki

2026.05.15

186

27

Python数据库与ORM实践
Python数据库与ORM实践

全面讲解 Python 中数据库操作的技术方案,涵盖 sqlite3 标准库的轻量数据库操作、PyMySQL / psycopg2 连接 MySQL / PostgreSQL、DB-API 2.0 规范与游标操作、SQL 注入防范与参数化查询、SQLAlchemy Core 表达式语言与 ORM 模型定义/查询/关联关系映射、Alembic 数据库迁移管理、连接池(SQLAlchemy Pool / DBUtils)配置与调优、异步数据

2026.05.11

171

19

Python Web框架FastAPI 全栈开发教程合集
Python Web框架FastAPI 全栈开发教程合集

以 FastAPI 为核心,讲解现代 Python Web API 的高效开发方式,涵盖路由定义与路径参数/查询参数/请求体绑定、Pydantic 模型的数据校验与序列化、依赖注入(Depends)系统的分层设计、中间件与 CORS 配置、OAuth2 + JWT 认证流程、后台任务(BackgroundTasks)、WebSocket 实时通信、SQLAlchemy 异步 ORM 集成、自动生成 OpenAPI/Swagger 交互文

2026.05.09

316

23

Python多线程、多进程与并发编程教程大全
Python多线程、多进程与并发编程教程大全

系统讲解 Python 的并发与并行编程体系,涵盖 GIL 全局解释器锁的原理与影响分析、threading 模块的线程创建/锁/事件/信号量、multiprocessing 模块的进程创建/进程间通信(Queue/Pipe/共享内存)、concurrent.futures 线程池与进程池的统一接口、I/O 密集型与 CPU 密集型任务的方案选择、多线程竞态条件排查与线程安全数据结构、subprocess 子进程管理,帮助开发者根据任务

2026.05.08

114

32

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习