Go 语言调用 SiliconFlow 的 Deepseek AI Janus-Pro-7B 模型进行图像生成
使用 Go 调用 SiliconFlow 图像生成 API
概述
本文档介绍如何使用 Go 语言调用 SiliconFlow 的 Deepseek AI Janus-Pro-7B 模型进行图像生成。
环境准备
- Go 1.20 或更高版本
 - 网络连接
 - SiliconFlow API 令牌
 
依赖管理
在项目根目录创建 go.mod 文件:
go mod init image-generator
go get github.com/go-resty/resty/v2
 
代码实现
main.go
 
package main
import (
    "fmt"
    "log"
    "github.com/go-resty/resty/v2"
)
type ImageGenerationRequest struct {
    Model  string `json:"model"`
    Prompt string `json:"prompt"`
    Seed   int64  `json:"seed"`
}
func generateImage(apiToken string, prompt string) error {
    client := resty.New()
    req := &ImageGenerationRequest{
        Model:  "deepseek-ai/Janus-Pro-7B",
        Prompt: prompt,
        Seed:   4999999999,
    }
    resp, err := client.R().
        SetHeader("Authorization", "Bearer "+apiToken).
        SetHeader("Content-Type", "application/json").
        SetBody(req).
        Post("https://api.siliconflow.cn/v1/images/generations")
    if err != nil {
        return fmt.Errorf("请求发送失败: %v", err)
    }
    if resp.IsError() {
        return fmt.Errorf("API错误: %s", resp.String())
    }
    fmt.Println("图像生成响应:", resp.String())
    return nil
}
func main() {
    apiToken := "<你的SiliconFlow令牌>"
    prompt := "海边的岛屿,海鸥,月光洒在海面上,灯塔,背景有船只,海面上有飞鱼"
    err := generateImage(apiToken, prompt)
    if err != nil {
        log.Fatalf("图像生成失败: %v", err)
    }
}
 
运行项目
go mod tidy
go run main.go
 
注意事项
- 替换 
<你的SiliconFlow令牌>为实际的 API 令牌 - 建议使用环境变量或配置文件管理敏感信息
 - 处理 API 响应和错误
 
错误处理
- 检查网络连接
 - 验证 API 令牌
 - 处理 API 返回的错误消息
 
最佳实践
- 使用错误处理和日志记录
 - 考虑实现重试机制
 - 保护 API 令牌安全
 
扩展功能建议
- 支持更多图像生成参数
 - 实现图像保存功能
 - 添加更复杂的错误处理逻辑
 
参考资源
- SiliconFlow API 文档
 - Go Resty 库:https://github.com/go-resty/resty
 
快来体验 siliconflow 图像生成服务:https://cloud.siliconflow.cn/i/vnCCfVaQ
