AGENT SKILL

venice--venice-characters

Discover and use Venice public characters (persona-driven system prompts with a bound model). Covers GET /characters (search/filter/sort), /characters/{slug}, /characters/{slug}/reviews, the Character schema, and how to apply a character via venice_parameters.character_slug in chat completions.

License 许可
MIT
最近更新
2026-11-11
Stars
★ 13
Forks
1

01 前言 Front Matter

name
venice--venice-characters
origin
github.com/veniceai/skills (skill: venice-characters)
license
MIT
version
1.0.0
description
Discover and use Venice public characters (persona-driven system prompts with a bound model). Covers GET /characters (search/filter/sort), /characters/{slug}, /characters/{slug}/reviews, the Character schema, and how to apply a character via venice_parameters.character_slug in chat completions.
compatibility
yana-ai >= 0.14.0

03 SKILL.md 正文

Venice Characters

Characters are published personas on Venice — each one bundles a system prompt, a backing model, optional web access, and metadata (tags, ratings, adult flag). You apply a character to any chat by passing its slug via venice_parameters.character_slug.

Use when

  • You want to build a character-selection UI or discovery surface.
  • You want to ship an app with a preset persona (e.g. a coding coach, a philosopher, a game NPC).
  • You need to adapt a character's underlying model (modelId) to match your capability requirements.

Three endpoints, all under Preview (API may change):

Endpoint Purpose
GET /characters Browse/search/filter the catalog.
GET /characters/{slug} Fetch one character.
GET /characters/{slug}/reviews Paginated public reviews.

All three endpoints require authentication (Bearer API key or x402 SIWE) — see venice-auth. There is no unauthenticated public endpoint.

GET /characters

curl "https://api.venice.ai/api/v1/characters?search=philosopher&sortBy=highestRating&limit=20" \
  -H "Authorization: Bearer $VENICE_API_KEY"

Query parameters

Param Type Notes
search string, ≤ 200 Name, description, or tag match. Hashtag (#Philosophy) supported.
categories string[], ≤ 20 Repeat or comma-separate. Character categories (roleplay, philosophy, …).
tags string[], ≤ 20 Repeat or comma-separate.
modelId string[], ≤ 20 Filter by backing model (zai-org-glm-5-1, kimi-k2-6, minimax-m25, …).
isAdult "true" / "false" Adult-content flag.
isPro "true" / "false" Require a Pro model.
isWebEnabled "true" / "false" Allow web access.
sortBy enum featured, highestRating, highlyRated, highlyRatedAndRecent, imports, mostRecent, ratingCount.
sortOrder asc / desc Default desc.
limit 1–100 Default 50.
offset integer Pagination offset.

Character object

Field Notes
id UUID.
slug Use this as character_slug in chat. URL-safe.
name, description, photoUrl, shareUrl Presentation.
author Anonymized short ID.
tags[], featured, adult, webEnabled Metadata.
modelId Backing Venice model ID (e.g. venice-uncensored).
stats {averageRating, imports, ratingCount, ratingSum, userRating}.
createdAt, updatedAt ISO-8601.

GET /characters/{slug}

curl "https://api.venice.ai/api/v1/characters/alan-watts" \
  -H "Authorization: Bearer $VENICE_API_KEY"

Returns the same object shape above, wrapped as { object: "character", data: { ... } }. 404 if the slug is unknown or unpublished.

GET /characters/{slug}/reviews

curl "https://api.venice.ai/api/v1/characters/alan-watts/reviews?page=1&pageSize=20" \
  -H "Authorization: Bearer $VENICE_API_KEY"

Response:

{
  "object": "list",
  "pagination": {"page": 1, "pageSize": 20, "total": 87, "totalPages": 5},
  "summary": {"averageRating": 4.7, "totalReviews": 87},
  "data": [
    {
      "id": "...", "characterId": "...", "createdAt": "...",
      "rating": 5, "message": "Thoughtful and grounded.",
      "locale": "en", "username": "product_user_42", "isOwner": false,
      "userAvatarUrl": "https://cdn.venice.ai/..."
    }
  ]
}

Also sets x-pagination-* response headers (limit, page, total, total-pages).

Using a character in chat

Minimal

{
  "model": "zai-org-glm-5-1",
  "venice_parameters": { "character_slug": "alan-watts" },
  "messages": [
    { "role": "user", "content": "What's the nature of mind?" }
  ]
}

The character's system prompt is injected by Venice. include_venice_system_prompt defaults to true and adds Venice's curated prelude — set it to false for a pure character voice.

Ignoring the character's backing model

You can override the model — Venice will still apply the character's system prompt:

{
  "model": "kimi-k2-6",
  "venice_parameters": {
    "character_slug": "alan-watts",
    "include_venice_system_prompt": false
  },
  "messages": [...]
}

Useful when the character's modelId lacks a capability (e.g. function calling, vision) that your app needs.

Via feature suffix on the model string

{ "model": "zai-org-glm-5-1:character_slug=alan-watts", "messages": [...] }

Useful when the client library (OpenAI SDK, LangChain, etc.) can't add venice_parameters. See venice-chat for the full suffix grammar.

Patterns

Character picker UI

const res = await fetch(`${base}/characters?sortBy=featured&limit=50`, {
  headers: { Authorization: `Bearer ${process.env.VENICE_API_KEY}` },
})
const { data } = await res.json()
// show data[].photoUrl, data[].name, data[].stats.averageRating
// pick a slug, then pass into chat:
await chat({
  model: pickedModelId,
  venice_parameters: { character_slug: pickedSlug },
  messages: [...]
})

Filter for family-friendly + web

/characters?isAdult=false&isWebEnabled=true&sortBy=highlyRatedAndRecent

Search by hashtag

/characters?search=%23Philosophy

Errors

Code Meaning
400 Bad query params (e.g. limit > 100).
401 Missing or invalid auth. All three endpoints require a Bearer key or SIWE header.
404 Unknown slug.
500 Transient. Retry.

Gotchas

  • This is Preview API — response shape may change.
  • Slugs are the public ID on the character's page (venice.ai/c/<slug>). They are not the internal id UUID.
  • photoUrl / shareUrl / userAvatarUrl can be null — don't assume they exist.
  • Character modelId may be gated (Pro, beta). If you always reuse the character's modelId, handle 401 "only available to Pro users" gracefully.
  • Adult-flagged characters are omitted unless isAdult=true is explicitly passed.

04 同仓库更多 Skills

Horonomos-laps
Horonomos-laps/Yana-AI

openai--sentry--sentry

Use when the user asks to inspect Sentry issues or events, summarize recent production errors, or pull basic Sentry health data via the Sentry API; perform read-only queries with the bundled script and require `SENTRY_AUTH_TOKEN`.

★ 13
Horonomos-laps
Horonomos-laps/Yana-AI

ito-basket-compare

Compare Itô prediction-market baskets against a user's knowledge base, portfolio notes, financial context, watchlist, or research thesis. Use for read-only basket comparison and gap analysis without investment advice or live trading.

★ 13
Horonomos-laps
Horonomos-laps/Yana-AI

implementing-network-traffic-baselining

Build network traffic baselines from NetFlow/IPFIX data using Python pandas for statistical analysis, z-score anomaly detection, and hourly/daily traffic pattern profiling

★ 13
Horonomos-laps
Horonomos-laps/Yana-AI

detecting-evasion-techniques-in-endpoint-logs

Detects defense evasion techniques used by adversaries in endpoint logs including log tampering, timestomping, process injection, and security tool disabling. Use when investigating suspicious endpoint behavior, building detection rules for evasion tactics, or conducting threat hunting for stealthy adversary activity. Activates for requests involving evasion detection, defense evasion analysis, log tampering detection, or MITRE ATT&CK TA0005.

★ 13
Horonomos-laps
Horonomos-laps/Yana-AI

implementing-microsegmentation-with-guardicore

Implementing microsegmentation using Akamai Guardicore Segmentation to map application dependencies, create granular network policies, visualize east-west traffic flows, and enforce least-privilege communication between workloads across data centers and cloud.

★ 13
Horonomos-laps
Horonomos-laps/Yana-AI

ramdisk-tmpfs-patterns

暂无简介

★ 13