快速开始
本页帮助你在最短路径内跑通 OpenTrans,并理解最常用的几个入口。
环境要求
- Go
1.20+ - 需要能访问你的 Go module 依赖源
安装
bash
go get github.com/xy200303/OpenTrans推荐直接从模块根路径导入:
go
import opentrans "github.com/xy200303/OpenTrans"30 秒内跑通第一个请求转换
go
package main
import (
"fmt"
"log"
opentrans "github.com/xy200303/OpenTrans"
)
func main() {
src := []byte(`{
"model": "gpt-4.1-mini",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Write a haiku about Go"}
],
"temperature": 0.4
}`)
out, err := opentrans.ConvertRequestBody(
src,
opentrans.ProtocolOpenAI,
opentrans.ProtocolClaude,
)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(out))
}这段代码做了三件事:
- 按
openai协议解析输入 body - 映射到标准化
Request - 再按
claude协议输出
最常用的 API
请求转换
go
out, err := opentrans.ConvertRequestBody(body, opentrans.ProtocolOpenAI, opentrans.ProtocolClaude)非流式响应转换
go
out, err := opentrans.ConvertResponseBody(body, opentrans.ProtocolClaude, opentrans.ProtocolOpenAI)流式事件转换
go
out, err := opentrans.ConvertStreamEventBody(body, opentrans.ProtocolResponses, opentrans.ProtocolClaude)标准化中间结构
go
req, err := opentrans.NormalizeRequest(opentrans.ProtocolGemini, body)
out, err := opentrans.MarshalRequest(req, opentrans.ProtocolOpenAI)如果你已经持有 provider struct
你可以直接使用公开的结构体入口:
go
req, err := opentrans.NormalizeOpenAIChatCompletionParams(openaiParams)
req, err := opentrans.NormalizeResponsesRequest(responsesReq)
req, err := opentrans.NormalizeClaudeMessageParams(claudeParams)
req, err := opentrans.NormalizeGeminiGenerateContentRequest(geminiReq)或者使用 model-to-model 转换:
go
out, err := opentrans.ConvertRequestModel(
openaiParams,
opentrans.ProtocolOpenAI,
opentrans.ProtocolClaude,
)复用 Converter
如果一种协议组合会重复出现,推荐复用转换器实例:
go
converter := opentrans.MustNewConverter(
opentrans.ProtocolOpenAI,
opentrans.ProtocolGemini,
)
out, err := converter.Convert(body)Converter 同时支持:
ConvertConvertResponseConvertStreamEventConvertRequestModelConvertResponseModelConvertStreamEventModel
Gin 项目接入
go
import (
"github.com/gin-gonic/gin"
opentrans "github.com/xy200303/OpenTrans"
"github.com/xy200303/OpenTrans/pkg/opentrans/ginx"
)
router := gin.Default()
router.POST(
"/v1/chat/completions",
ginx.ConvertRequestBody(opentrans.ProtocolOpenAI, opentrans.ProtocolClaude),
func(c *gin.Context) {
c.Status(200)
},
)如果你需要流式 SSE 转换,使用:
go
ginx.ConvertStreamEventBody(opentrans.ProtocolClaude, opentrans.ProtocolOpenAI)更多细节见:Gin 中间件
独立运行 Web 服务
如果你想先在浏览器中验证转换结果:
bash
go run ./services/opentransd/cmd/opentransd启动后访问:
text
http://localhost:8080更多细节见:Web 服务与 Docker
本地预览文档站点
文档站点位于 website/:
bash
cd website
npm install
npm run dev构建静态产物:
bash
cd website
npm run build下一步
建议继续阅读: