技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
arize-migrate-langfuse【数据与研究】Migrates LLM observability from Langfuse into Arize AX — historical trace import via OTLP (LF output→output.value, sessionId→session.id), datasets, and prompts (latest or versions + labels). Use when migrating from Langfuse to Arize or importing Langfuse observations into AX.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Move Langfuse data into Arize AX. Historical traces are in scope — export observations and ingest into AX via OTLP with explicit attribute mapping.
SPACE— Prefer user-provided space name/ID; do not paginateax spaces listfirst just to look it up.
scripts/migrate_vendor_traces.py --vendor langfuse. Do not fake migration with live-only AX traffic.output.value = observation output as text — unwrap simple wrappers; do not place message/parts timelines in output.value.sessionId → attributes.session.id; userId → user.id.ax profiles / env for Arize. Do not read .env from disk.LANGFUSE_BASE_URL to the region that issued the keys (EU vs US).Proceed with the task. If something fails, troubleshoot from the error:
ax missing / version error → ax setup401 Unauthorized / missing Arize key → ax profiles (or ask for ARIZE_API_KEY + ARIZE_SPACE_ID for OTLP)LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY, and LANGFUSE_BASE_URL.env files or search the filesystem for credentials| Data | Move? | Path |
|---|---|---|
| Historical observations / traces | Yes | scripts/migrate_vendor_traces.py --vendor langfuse |
| Datasets | Yes | Public API → ax datasets create |
| Prompts | Yes | GET /api/public/v2/prompts → ax prompts create / create_version + labels |
| Live traffic going forward | Separate | Point new traffic at AX after import (not part of this skill) |
| Evaluators / experiments | Recreate / re-run for now | Do not import old scores as AX experiment truth |
| Langfuse | Arize |
|---|---|
Observation output | output.value (string) |
Observation input | input.value |
Trace sessionId | session.id |
Trace userId | user.id |
type (GENERATION/SPAN/TOOL/AGENT/…) | openinference.span.kind |
parentObservationId / traceId | OTLP parent / trace id |
Optional --tag | Restrict import to tagged traces |
| — | migration.source=langfuse |
Migration progress:
- [ ] 0. Confirm scope (space, AX project, resource types)
- [ ] 1. Preflight (Langfuse auth + AX project)
- [ ] 2. Import historical traces (required when migrating traces)
- [ ] 3. Datasets
- [ ] 4. Prompts / evaluators (optional)
- [ ] 5. Live cutover (optional)
- [ ] 6. Verify
Target AX space + destination project name. Confirm Langfuse host/region.
ax projects list --space SPACE (or create destination project)Locate this installed skill's root and run its bundled commands by absolute path, so they work from any workspace. Check the chosen interpreter is Python 3.10 or later. Create an isolated environment if needed; see helper dependencies (Langfuse uses the public REST API, so extra packages are optional).
export ARIZE_API_KEY=... ARIZE_SPACE_ID=...
export LANGFUSE_PUBLIC_KEY=... LANGFUSE_SECRET_KEY=... LANGFUSE_BASE_URL=...
python scripts/migrate_vendor_traces.py \
--vendor langfuse \
--arize-project DEST_PROJECT \
--limit 200
Optional filters:
--tag TAG — only observations belonging to traces with that Langfuse tag (useful when the project also has unrelated experiment traffic)--dry-run — preview mapping without ingestVerify:
ax spans export DEST_PROJECT --space SPACE -l 50 --days 7 --stdout
Confirm string output.value, parent_id links, and session.id when Langfuse traces had sessionId.
See Langfuse export recipes → flatten → ax datasets create.
Ask production/latest only vs all versions. Then:
GET /api/public/v2/prompts to list names, versions, and labelsGET /api/public/v2/prompts/{name}?version=N (or label=) for each version to importtext prompts → a single AX message; map chat prompts → role/content arrays (SYSTEM / USER / ASSISTANT)F_STRING vs MUSTACHE; ask if mixedcreate_version in version order; apply Langfuse labels (production, staging, …) with set_labelsRecreate or re-run in AX for now.
Summarize spans imported, sample output.value, session coverage, prompts/versions/labels, and gaps.
.arize-tmp-migrate/langfuse/ for raw exports (gitignored at repo root).
arize-instrumentation, arize-dataset, arize-trace, arize-migrate-langsmith, arize-migrate-braintrust