newapi

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 6, 2026 License: MIT Imports: 22 Imported by: 0

Documentation

Overview

Package newapi 对接 New API 文档中的大模型 HTTP 接口(图像 / 视频 / 语音等)。

BaseURL 可为网关 origin(https://host)或常见写法 https://host/v1;内部会规范为 origin, 再拼接绝对路径,以便同时支持 /v1/...、/kling/...、/jimeng/... 等。

通过 Config.Route 选择路径族(可灵、即梦、Sora、通义千问图、Gemini 等);未指定时按 MediaKind 使用 OpenAI 兼容默认路由。 Config.DisableRemoteMediaFetch 为 true 时,图中 image_url/audio_url 不会发起 HTTP GET(降低 SSRF 风险)。

文档片段见仓库:other/new-api-docs-v1/openapi/generated/ai-model/ 下各子目录。

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrMissingAPIKey  = errors.New("newapi: missing API key")
	ErrMissingPrompt  = errors.New("newapi: prompt not found in workflow graph")
	ErrMissingVoice   = errors.New("newapi: voice not found for speech (use AudioOptions.voice)")
	ErrMissingBaseURL = errors.New("newapi: BaseURL is empty (set Config.BaseURL or NEWAPI_BASE_URL)")

	ErrMissingImageSource  = errors.New("newapi: image source for edits not found in graph")
	ErrMissingAudioSource  = errors.New("newapi: audio source for whisper not found in graph")
	ErrMissingJimengReqKey = errors.New("newapi: jimeng req_key missing (graph input req_key / jimeng_req_key)")
	ErrRemoteMediaDisabled = errors.New("newapi: remote media URL fetch disabled (set DisableRemoteMediaFetch=false to allow image_url/audio_url)")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	APIKey  string
	BaseURL string // 网关 origin 或以 /v1 结尾的写法均可,见 NormalizeOrigin
	Model   string
	// Route 非空时优先;否则按 Kind 选择默认 OpenAI 路径族。
	Route Route
	Kind  MediaKind

	HTTPClient *http.Client
	// 图像
	Quality string
	Style   string
	// 视频
	WaitForCompletion bool
	PollInterval      time.Duration
	// 即梦
	JimengVersion string // 查询参数 Version,默认 2022-08-31
	// DisableRemoteMediaFetch 为 true 时,图中 image_url/audio_url 不再发起 HTTP GET(降低 SSRF 风险;默认 false)。
	DisableRemoteMediaFetch bool
}

Config 配置 New API 引擎。

type Engine

type Engine struct {
	// contains filtered or unexported fields
}

Engine 实现 engine.Engine。

func New

func New(cfg Config) *Engine

New 创建引擎。Kind 为空且 Route 为空时,默认 KindImage。

func (*Engine) Capabilities

func (e *Engine) Capabilities() engine.Capability

Capabilities implements engine.Describer.

func (*Engine) Execute

func (e *Engine) Execute(ctx context.Context, g workflow.Graph) (engine.Result, error)

Execute 按 Route/Kind 调用对应 HTTP 接口。

type MediaKind

type MediaKind string

MediaKind 在未指定 Route 时选择默认 OpenAI 兼容族。

const (
	KindImage  MediaKind = "image"
	KindVideo  MediaKind = "video"
	KindSpeech MediaKind = "speech"
)

type Route

type Route string

Route 指定调用的网关路径族;为空时由 MediaKind 推导默认 OpenAI 兼容接口。

const (
	RouteAuto Route = ""

	// OpenAI 兼容(New API 统一路径)
	RouteOpenAIImagesGenerations Route = "openai_images_generations" // POST /v1/images/generations
	RouteOpenAIImagesEdits       Route = "openai_images_edits"       // POST /v1/images/edits (multipart)
	RouteOpenAIVideoGenerations  Route = "openai_video_generations"  // POST/GET /v1/video/generations
	RouteOpenAISpeech            Route = "openai_audio_speech"       // POST /v1/audio/speech
	RouteOpenAITranscriptions    Route = "openai_audio_transcriptions"
	RouteOpenAITranslations      Route = "openai_audio_translations"

	// 可灵 Kling
	RouteKlingText2Video  Route = "kling_text2video"
	RouteKlingImage2Video Route = "kling_image2video"

	// 即梦(火山系 Action+Version)
	RouteJimengVideo Route = "jimeng_video"

	// Sora(OpenAI 视频:multipart 创建 + 轮询 + /content 取流)
	RouteSoraVideos Route = "sora_v1_videos"

	// 通义千问图像(同路径 /v1/images/generations,请求体为 input.messages)
	RouteQwenImagesGenerations Route = "qwen_images_generations"

	// Gemini 原生 generateContent(图/音等)
	RouteGeminiGenerateContent Route = "gemini_generate_content"
)

Directories

Path Synopsis
internal
rt
Package rt 提供网关 BaseURL 规范化与路径拼接。
Package rt 提供网关 BaseURL 规范化与路径拼接。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL