1、智谱免费全家桶

前段时间智谱BigModel开放平台,开放了视觉理解模型GLM-4V-Flash的API,供大家买免费调用,新开放的模型是基于图片做深度思考,推理和分析。给许多想要开发AI工具的小伙伴提供了免费的AI底座。遇到不懂的拿手机随手拍一下,直接上传给GLM-4V-Flash就可以了。小编也在获知后第一时间去体验并测试了一把!

算上本次最新开放的GLM-4V-Flash大模型,智谱开放平台目前已经有4款免费大模型,供大家调用,完全是开发者的福利平台了,这些免费模型基本可以满足我们大部分的应用场景。

四款模型分别如下:

  • CogVideoX-flash:免费视频生成模型,具备强大的视频生成能力。
  • CogView-3-flash:免费图像生成模型,可以生成符合指令且美学评分更高的图像。
  • GLM-4v-flash(多模态):免费且强大的图像理解模型,在图像识别、图像问答、图像推理任务等场景上有展现出了良好的效果。
  • GLM-4-flash:免费且好用的语言模型,在智能问答、摘要生成和文本数据处理等多种应用场景中均表现出良好的效果。

还能这么玩,国产免费大模型全家桶就是强!完全免费..._人工智能

这四款模型分别对应文本,视频,文生图,图分析,每个模型针对不同的场景,免费开放给大家使用,这也大大降低了产品的研发成本。

有需要的小伙伴可以去官方体验,如果免费模型无法满足,可以使用更高级的模型,API收费也是非常的低

还能这么玩,国产免费大模型全家桶就是强!完全免费..._GLM-4大模型_02

另外,针对新用户,智谱开放平台也是诚意满满。注册即可享有超大福利包,大额免费Token额度:

  • 模型直达:https://bigmodel.cn

2、在线体验全家桶大模型

我们之前已经体验过其他模型,今天再测试下,包括最新开放的GLM-4V-Flash模型,看看这些模型有那些让人印象深刻的地方。我们通过模型广场直接选择对应的模型,体验即可。

1、图生文

我们先来个简单的,上传一张美女图片,来个图生文,生成AI绘画的提示词。

按我们想要的输出,并且写的非常详细,这点还是非常满意的。通过AI来生成提示词,效率杠杠的。现在不少在某红书和某宝出售提示词的,是一个不错的副业,其实这些就是信息差,感兴趣的小伙伴也可以去做。

2、数学题解答

下面我们让GLM-4V-Flash模型做道中学几何题。现在市面上有一少作业批改神器,还有专门的作业辅导助手,底层都是基于AI模型对图片理解分析的处理。那么我们看看GLM-4V-Flash模型对于数学理解能力如何?

还能这么玩,国产免费大模型全家桶就是强!完全免费..._GLM-4大模型_04

还能这么玩,国产免费大模型全家桶就是强!完全免费..._BigModel开放平台_05

一道简单的中学数学题,对我们GLM大模型来说,解答起来还是比较简单的。

3、物理题解答

接着,我们增加点难度,来一道高中物理题,看看大模型能力如何?

还能这么玩,国产免费大模型全家桶就是强!完全免费..._智谱开放平台_06

也可以很丝滑的回答,解答的非常详细,按要求一步一步分析解答,给出了我们想要的答案。

4、热量计算

我们再上传一个食品图片,让他帮我们计算下热量。

还能这么玩,国产免费大模型全家桶就是强!完全免费..._智谱开放平台_08

回答还不错,先是给出了甜甜圈的成分,配料和制作过程,然后给了一个总热量供我们参考。

5、鉴宝

最后我们来个AI鉴宝,拿出我收藏了四五年的大元宝,看看真伪,值多少钱?

还能这么玩,国产免费大模型全家桶就是强!完全免费..._GLM-4大模型_09

还能这么玩,国产免费大模型全家桶就是强!完全免费..._Ai大模型_10

哈哈,GLM大模型并没有给出特别肯定的回答,但是给了我们一些有价值的参考信息,这个回答也相当不错。

3、调用全家桶大模型API

既然智谱开放平台提供了免费全家桶模型,我们肯定要通过代码测试下,下面我们通过Java调用GLM-4V-Flash和GLM-4-Flash模型的API,应用到自己的项目中。

  • 模型直达:https://bigmodel.cn
  • 开发文档:https://bigmodel.cn/dev/api/normal-model/glm-4v

还能这么玩,国产免费大模型全家桶就是强!完全免费..._人工智能_11

BigModel开放平台的官方文档,已经非常详细,包括代码Demo,SDK和参数说明,大家可以参考开发文档,自己调试。本次是个人的部分代码调用,仅供参考:

1、引入SDK

首先,我们需要引入官方的最新SDK,添加到自己的项目中。

<dependency>
  <groupId>cn.bigmodel.openapi</groupId>
  <artifactId>oapi-java-sdk</artifactId>
  <version>release-V4-2.3.0</version>
</dependency>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

2、代码部分

下面自己封装一个参数类,方便管理

import org.json.JSONObject;

public interface Content {
    JSONObject toJson();
}

// 图片类
class ImageContent implements Content {
    private String type;
    private String imageUrl;

    public ImageContent(String imageUrl) {
        this.type = "image_url";
        this.imageUrl = imageUrl;
    }

    @Override
    public JSONObject toJson() {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("type", type);
        JSONObject imageObject = new JSONObject();
        imageObject.put("url", imageUrl);
        jsonObject.put("image_url", imageObject);
        return jsonObject;
    }


    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getImageUrl() {
        return imageUrl;
    }

    public void setImageUrl(String imageUrl) {
        this.imageUrl = imageUrl;
    }
}

// 文本类
class TextContent implements Content {
    private String type;
    private String text;

    public TextContent(String text) {
        this.type = "text";
        this.text = text;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    @Override
    public JSONObject toJson() {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("type", type);
        jsonObject.put("text", text);
        return jsonObject;
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.

内容管理代码Demo

import com.alibaba.fastjson.JSONObject;
import org.json.JSONArray;

import java.util.ArrayList;
import java.util.List;

public class ContentManager {

    private List<Content> contents;

    public ContentManager() {
        this.contents = new ArrayList<>();
    }

    public void addContent(Content content) {
        contents.add(content);
    }

    public List<Content> getContents() {
        return contents;
    }

    public void setContents(List<Content> contents) {
        this.contents = contents;
    }

    // 转换内容列表为JSON数组
    public JSONArray toJsonArray() {
        JSONArray jsonArray = new JSONArray();
        for (Content content : contents) {
            jsonArray.put(content.toJson());
        }
        return jsonArray;
    }

    // 转换内容列表为List<Object>
    public List<Object> toObjectList() {
        List<Object> objectList = new ArrayList<>();
        for (Content content : contents) {
            objectList.add(content.toJson()); 
        }
        return objectList;
    }


    public static List<Object> toObjectList(String image, String text) {
        // 创建ContentManager对象
        ContentManager contentManager = new ContentManager();

        // 添加内容
        contentManager.addContent(new ImageContent(image));
        contentManager.addContent(new TextContent(text));

        // 获取内容的List<Object>
        return contentManager.toObjectList();
    }


    public static JSONArray toJsonArray(String image, String text) {
        // 创建ContentManager对象
        ContentManager contentManager = new ContentManager();

        // 添加内容
        contentManager.addContent(new ImageContent(image));
        contentManager.addContent(new TextContent(text));

        // 获取内容的JSON数组
        return contentManager.toJsonArray();
    }
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.

流式输出

public static String sseInvoke2(String msg, String modelChat) {

        String image_url = "https://www.itmatu.com/wp-content/uploads/2024/12/1735467022-b26747fc8cb2170.png";

        List<Object> content2 = ContentManager.toObjectList(image_url, msg);
// System.out.println("content2:"+JSON.toJSONString(content2));

        List<ChatMessage> messages = new ArrayList<>();
        ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), content2);
        messages.add(chatMessage);

        String requestId = String.format(requestIdTemplate, System.currentTimeMillis());

        ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
                .model(modelChat)
                .stream(Boolean.TRUE)
                .messages(messages)
                .requestId(requestId)
                .build();

        ModelApiResponse sseModelApiResp = client.invokeModelApi(chatCompletionRequest);
        if (sseModelApiResp.isSuccess()) {
            AtomicBoolean isFirst = new AtomicBoolean(true);
            ChatMessageAccumulator chatMessageAccumulator = mapStreamToAccumulator(sseModelApiResp.getFlowable(),chatMessage)
                    .doOnNext(accumulator -> {
                        {
                            if (isFirst.getAndSet(false)) {
                                //System.out.print("Response: ");
                            }
                            if (accumulator.getDelta() != null && accumulator.getDelta().getTool_calls() != null) {
                                String jsonString = mapper.writeValueAsString(accumulator.getDelta().getTool_calls());
                                //System.out.println("tool_calls: " + jsonString);
                            }
                            if (accumulator.getDelta() != null && accumulator.getDelta().getContent() != null) {
                                // 这句代码是返回的具体结果
                                System.out.print(accumulator.getDelta().getContent());
                            }
                        }
                    })
                    .doOnComplete(System.out::println)
                    .lastElement()
                    .blockingGet();

            Choice choice = new Choice();
            choice.setFinishReason(chatMessageAccumulator.getChoice().getFinishReason());
            choice.setIndex(0L);
            choice.setDelta(chatMessageAccumulator.getDelta());

            List<Choice> choices = new ArrayList<>();
            choices.add(choice);
            ModelData data = new ModelData();
            data.setChoices(choices);
            data.setUsage(chatMessageAccumulator.getUsage());
            data.setId(chatMessageAccumulator.getId());
            data.setCreated(chatMessageAccumulator.getCreated());
            data.setRequestId(chatCompletionRequest.getRequestId());
            sseModelApiResp.setFlowable(null);
            sseModelApiResp.setData(data);
        }
        return JSON.toJSONString(sseModelApiResp);
    }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.

测试:小学作业批改,「让GLM-4V-Flash批改下这个作业?」。

还能这么玩,国产免费大模型全家桶就是强!完全免费..._智谱开放平台_12

3、代码测试

运行代码,大家可以看到响应也比较快的,而且描述的非常准确。这里不在过多测试,留给大家自己去调试体验吧!

4、国产之光

目前国内几家自研大模型,都非常强悍,部分大模型在一些领域已经取得行业领先。智谱也凭借自身的优势,大量的研发投入,不断的创新,早已跻身国际顶尖大模型行列。

加上本次智谱开放平台开放的GLM-4V-Flash视觉理解大模型,目前智谱开放的免费大模型已经几乎将我们使用到的场景都囊括了,而免费给大家使用就智谱开放平台不惧同行的底气。

我们可以通过智谱开放平台提供的大模型做一些不同场景的工具,比如:作业批改,伴学助手,商业选址,食品热量计算或者美女鉴宝、看风水,看面相等等,只要是能拍下来的,智谱大模型就能搞你轻松解决。。。

好了,今天就给大家分享到这里。如果你也想在自己的项目中引入智谱开放平台的大模型,可以前往官网,了解更多!智谱AI开放平台