Cangejie Magic智谱AI文生图API实战详解

目录

引言

质谱AI文生图API

接口请求

请求参数

响应参数

Cangjie Magic相关代码的修改

src/model/model_manager.cj文件修改

增加ZhipuAIImageModel

程序测试

结束语


引言

当创意遇上代码,AI文生图技术正在重塑视觉创作边界!质谱AI的CogView模型以其对文本描述的精准理解和多样化风格表达能力,为开发者提供了强大的图像生成工具。本文将深入解析如何通过质谱AI文生图API实现创意可视化,并重点解决开发者在华为Cangjie Magic框架中集成该API时遇到的关键兼容性问题——从接口参数详解到框架源码改造,手把手带您打通技术集成全链路。

质谱AI文生图API

质谱AI的CogView模型适用于图像生成任务,通过对用户文字描述快速、精准的理解,让AI的图像表达更加精确和个性化,其API接口参见智谱AI开放平台

接口请求

传输方式HTTPS
请求地址https://open.bigmodel.cn/api/paas/v4/images/generations
调用方式同步调用,等待模型执行完成并返回最终结果
字符编码UTF-8
接口请求格式JSON
响应格式JSON
接口请求类型POST
开发语言任意可发起 http 请求的开发语言

请求参数

参数名类型必填描述
modelString模型编码,目前支持:cogview-4-250304、cogview-4、cogview-3-flash
promptString所需图像的文本描述
qualityString生成图像的质量,默认为 standard
hd : 生成更精细、细节更丰富的图像,整体一致性更高,耗时约20 秒
standard :快速生成图像,适合对生成速度有较高要求的场景,耗时约 5-10 秒
此参数仅支持cogview-4-250304 。
sizeString图片尺寸,推荐枚举值:1024x1024,768x1344,864x1152,1344x768,1152x864,1440x720,720x1440,默认是1024x1024。
自定义参数:长宽均需满足 512px - 2048px 之间,需被16整除, 并保证最大像素数不超过 2^21 px。
user_idString终端用户的唯一ID,协助平台对终端用户的违规行为、生成违法及不良信息或其他滥用行为进行干预。ID长度要求:最少6个字符,最多128个字符。

响应参数

参数名称类型参数说明
createdString请求创建时间,是以秒为单位的Unix时间戳。
dataList数组,包含生成的图片 URL。目前数组中只包含一张图片。
 urlString图片链接。图片的临时链接有效期为 30天,请及时转存图片。
content_filterList返回内容安全的相关信息。
 roleString安全生效环节,包括 role = assistant 模型推理,role = user 用户输入,role = history 历史上下文
 levelInteger严重程度 level 0-3,level 0表示最严重,3表示轻微

Cangjie Magic相关代码的修改

质谱AI的接口和OpenAI差不多,但是如果直接在Cangjie Magic中用OpenAi接口调用,会产生如下错误:

An exception has occurred:
Exception: Convert to String error. Value: 1749968827
         at magic.jsonable.JsonableException::init(std.core::String)(/home/developer/.cjpm/git/magic/ca8cba8d704c88285e5a53cffdd8f03092a06e37/src/jsonable/jsonable.cj:38)
         at magic.jsonable.lambda.33()(/home/developer/.cjpm/git/magic/ca8cba8d704c88285e5a53cffdd8f03092a06e37/src/jsonable/jsonable.cj:49)
         at magic.jsonable.String::fromJsonValue(encoding.json::JsonValue)(/home/developer/.cjpm/git/magic/ca8cba8d704c88285e5a53cffdd8f03092a06e37/src/jsonable/jsonable.cj:48)
         at magic.model.openai.OpenAIImageResponse::fromJsonValue(encoding.json::JsonValue)(/home/developer/.cjpm/git/magic/ca8cba8d704c88285e5a53cffdd8f03092a06e37/src/model/openai/image.cj:18)
         at magic.model.openai.OpenAIImageModel::create(magic.core.model::ImageRequest)(/home/developer/.cjpm/git/magic/ca8cba8d704c88285e5a53cffdd8f03092a06e37/src/model/openai/image.cj:64)
         at genimg.main()(/home/developer/IDEProjects/genimg/src/main.cj:54)

产生这个错误的原因是质谱AI返回的数据中的created格式和OpenAI的略有不同,所以Cangjie Magic在处理Json数据时发生了错误。为此需要单独写个质谱AI的接口。

src/model/model_manager.cj文件修改

先增加:

import magic.model.zhipuai.ZhipuAIImageModel

修改createImageModel函数:

    public static func createImageModel(modelConfig: ModelConfig): ImageModel {
        match (modelConfig.service) {
            case "openai" =>
                return OpenAIImageModel(modelConfig.name, apiKey: modelConfig.apiKey, baseURL: modelConfig.baseURL)
            case "siliconflow" =>
                return SiliconflowImageModel(modelConfig.name, apiKey: modelConfig.apiKey, baseURL: modelConfig.baseURL)
            case "zhipuai" =>
                return ZhipuAIImageModel(modelConfig.name, apiKey: modelConfig.apiKey, baseURL: modelConfig.baseURL)
            case _ =>
                throw UnsupportedException("Unreachable")
        }
    }

增加ZhipuAIImageModel

创建src/model/zhipuai/image.cj文件如下:

/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2024-2025. All rights reserved.
 */
package magic.model.zhipuai

import magic.core.model.*
import magic.utils.http.*
import magic.dsl.jsonable
import magic.jsonable.*

import encoding.json.*
import std.collection.{HashMap, ArrayList}

@jsonable
private class ZhipuAIImageResponse {
    let created: Int64
    let data: Array<ZhipuAIImageData>
}

@jsonable
private class ZhipuAIImageData {
    let url: String
}

public class ZhipuAIImageModel <: ImageModel {
    private let model: String
    private let baseURL: String
    public let apiKey: String

    public init(
        model: String,
        apiKey!: String,
        baseURL!: String
    ) {
        this.model = model
        this.apiKey = apiKey
        this.baseURL = baseURL
    }

    override public prop service: String {
        get() { "zhipuai" }
    }

    override public prop name: String {
        get() { model }
    }

    override public func create(imageReq: ImageRequest): ImageResponse {
        let req = JsonObject()
        req.put("model", JsonString(model))
        req.put("prompt", JsonString(imageReq.prompt))
        req.put("quality", JsonString("standard"))
        req.put("size", JsonString(imageReq.size))
        let header = HashMap<String, String>([
            ("Content-Type", "application/json"),
            ("Authorization", "Bearer ${this.apiKey}")
        ])
        match (HttpUtils.post("${this.baseURL}/images/generations", header, req, verify: false)) {
            case Some(body) =>
                let resp = ZhipuAIImageResponse.fromJsonValue(JsonValue.fromStr(body))
                let image = resp.data[0] // Currently, we just return the first image
                return ImageResponse(
                    url: image.url
                )
            case None => throw ModelException("Fail to get image http response")
        }
    }
}

程序测试

测试程序编写如下:

package zhipuimg

import magic.dsl.tool
import magic.jsonable.*
import magic.tool.NativeFuncTool
import magic.core.model.ImageRequest
import magic.model.ModelManager
import magic.config.Config

main(): Int64 {

let model = ModelManager.createImageModel("zhipuai:cogview-3-flash")
let resp = model.create(
    ImageRequest(
        "夏天,沙滩,比基尼,躺椅",
        size: "1024x1024"
    )
)
println("图像已经生成, URL:${resp.url}")
return 0
}

这个程序和前面测试硅基流动的代码相同(使用华为CangjieMagic智能体框架实现文生图-CSDN博客) 。

测试结果如下:

developer@developer:~/IDEProjects/zhipuimg$ cjpm run --name zhipuimg
图像已经生成, URL:https://aigc-files.bigmodel.cn/api/cogview/20250615154053a589fe6d68174c19_0.png

cjpm run finished

生成的图像如下,感觉比硅基流动的模型好一些:

结束语

通过本文的实践指南,我们不仅掌握了质谱AI文生图API的核心调用方法(包括模型选择、质量参数调优和尺寸定制),更成功解决了Cangjie Magic框架中的兼容性挑战:通过新增ZhipuAIImageModel模块,重构模型管理器,并实现专属响应解析逻辑。

### 关于 AI 文生 API 的使用教程和开源项目 #### Spring AI 文生接口 Spring AI 提供了一种简单而高效的文生功能实现方式。其核心在于提供了一个直观易用的 API 接口,允许开发者通过传递文本提示来生成像[^1]。这些接口通常接收一个或多个字符串形式的描述性文字作为输入参数,并返回生成的像数据或者指向该像的 URL 链接。 以下是基于 Spring AI 实现的一个基本代码示例: ```python import requests def generate_image_with_spring_ai(prompt, api_key): url = "https://api.springai.com/v1/generate" headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json", } payload = {"prompt": prompt} response = requests.post(url, json=payload, headers=headers) if response.status_code == 200: image_url = response.json().get("image_url") return image_url else: raise Exception(f"Error generating image: {response.text}") # 调用函数 image_url = generate_image_with_spring_ai("A beautiful sunset over the ocean", "<your_api_key>") print(image_url) ``` 此代码片段展示了如何利用 POST 请求向 Spring AI 发送请求并获取生成的像链接。 --- #### 抖音旗下豆包的文生功能 对于预算有限但希望尝试高质量文生服务的情况,可以考虑抖音旗下的 AI 助手——豆包所提供的免费文生功能[^2]。尽管官方并未公开详细的 API 文档,但在某些开源社区中存在针对这一功能的逆向工程成果。需要注意的是,在实际应用过程中应严格遵循相关法律法规以及平台的服务条款,确保行为合法合规。 下面是一个可能用于调用豆包文生功能的概念性伪代码框架(注意:仅作学习交流用途,请勿滥用): ```python import requests def generate_image_with_douyin(prompt): # 假设已知的具体端点和服务密钥 endpoint = "https://doubao.ai/api/text-to-image" service_token = "example_service_token" headers = {"Authorization": f"Token {service_token}"} data = {"text_prompt": prompt} response = requests.post(endpoint, headers=headers, data=data) if response.ok: result = response.json() return result.get("image_url") or None else: print("Failed to generate image:", response.text) return None # 测试调用 url = generate_image_with_douyin("An artistic painting of mountains and rivers.") if url is not None: print("Generated Image URL:", url) else: print("No image generated.") ``` 上述方法仅为理论探讨,具体实施细节需依据实际情况调整。 --- #### Stable Diffusion 自托管解决方案 如果倾向于完全掌控整个流程而不依赖外部服务商,则可选用 **Stable Diffusion** 这一当前最强大的开源文生模型之一[^3]。它支持多种部署模式,既能够下载完整的模型权重到本地运行,也可以借助云服务平台简化操作过程。 以下是从头搭建 Stable Diffusion 环境的大致步骤概述(不涉及敏感技术细节): 1. 安装必要的 Python 库及相关工具链; 2. 获取最新版本的 Stable Diffusion 模型文件; 3. 构建 Web UI 或 RESTful API 层面的支持以便交互; 4. 对硬件资源进行优化配置以提升性能表现。 一段基础命令如下所示: ```bash git clone https://github.com/Stability-AI/stablediffusion.git cd stablediffusion pip install -r requirements.txt python scripts/txt2img.py --prompt "a fantasy landscape with castles floating in the air" --ckpt path/to/model.ckpt ``` 以上脚本执行完毕后将会保存一张由指定文案渲染而成的新片至默认目录下。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神一样的老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值