AIGC盛行,带你轻松调用开发

这篇具有很好参考价值的文章主要介绍了AIGC盛行,带你轻松调用开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本篇文章基于java和阿里云的通义千问大模型手把手带你使用AIGC开发,实现文本对话和图像分析。


一、📖AIGC简介

你知道什么是AIGC吗?不知道?没关系,我来告诉你:

  • AIGC就是由AI自动创作生成的内容(AI Generated Content),比如图片、视频、音乐、文字等。AIGC就像一支神奇的画笔,拥有无限的创造力。这支画笔的特别之处在于,它是由AI打造的。AI利用它的理解力、想象力和创作力,根据指定的需求和风格,创作出各种内容:文章、短篇小说、报告、音乐、图像,甚至是视频。AIGC的出现,打开了一个全新的创作世界,为人们提供了无数的可能性
  • AI,就是人工智能。它的目标是让机器能够像人一样有智能,能够看、听、说、想、做。要实现这个目标,AI需要用到重要的技术:深度学习NLP(自然语言处理)神经网络生成式对抗网络(GAN)

🌤️通过上面的讲诉,无论你曾经不知道还是模棱两可,现在应该大概了解了,下面带你走进AIGC,用程序员的身份打开AIGC。

二、📣开通体验

开通模型获取API-KEY

大家不要害怕开通不会产生收费,本文讲述的完全是免费就可使用的方法。

登录阿里云进入控制台后,鼠标移到下图位置

AIGC盛行,带你轻松调用开发,AIGC,AIGC,人工智能,机器学习,自然语言处理,神经网络,生成对抗网络,java

然后出现如下界面,找到人工智能与机器学习下的模型服务灵积,点击

AIGC盛行,带你轻松调用开发,AIGC,AIGC,人工智能,机器学习,自然语言处理,神经网络,生成对抗网络,java

参照开发文档,开通DashScope并创建API-KEY

AIGC盛行,带你轻松调用开发,AIGC,AIGC,人工智能,机器学习,自然语言处理,神经网络,生成对抗网络,java

总结文档上的开通步骤如下:

在控制台中点击总览,去开通

AIGC盛行,带你轻松调用开发,AIGC,AIGC,人工智能,机器学习,自然语言处理,神经网络,生成对抗网络,java
立开通(大家不要怕,这是不会产生扣费的)
AIGC盛行,带你轻松调用开发,AIGC,AIGC,人工智能,机器学习,自然语言处理,神经网络,生成对抗网络,java
开通后,点击 管理中心 的 API-KEY 菜单项,然后创建新的API-KEY
AIGC盛行,带你轻松调用开发,AIGC,AIGC,人工智能,机器学习,自然语言处理,神经网络,生成对抗网络,java
就会有个Accesskeyid和Secret值(这俩值要记住真正的开发中有用,本文章没用到)的弹窗,然后点击已创建的AIP-KEY查看并复制,这个会用到。

AIGC盛行,带你轻松调用开发,AIGC,AIGC,人工智能,机器学习,自然语言处理,神经网络,生成对抗网络,java

AIGC盛行,带你轻松调用开发,AIGC,AIGC,人工智能,机器学习,自然语言处理,神经网络,生成对抗网络,java

三、📝基于java实现调用

📣打开IDEA,开始操作了

1.设置API-KEY

先了解以下如何设置API-KEY值的:

import com.alibaba.dashscope.utils.Constants;
Constants.apiKey="这就是你的API-KEY的值(上面复制的)";

2.体验大语言模型

多轮对话演示

创建一个测试类:
AIGC盛行,带你轻松调用开发,AIGC,AIGC,人工智能,机器学习,自然语言处理,神经网络,生成对抗网络,java
代码如下:

import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.aigc.generation.models.QwenParam;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.MessageManager;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;
import org.mockito.internal.matchers.Contains;

import java.awt.*;


class test {
    public static void callWithMessage()
            throws NoApiKeyException, ApiException, InputRequiredException {
        // 设置API-KEY值
        Constants.apiKey="你的API-KEY值";
        Generation gen = new Generation();
        MessageManager msgManager = new MessageManager(10);
        Message systemMsg =
                Message.builder().role(Role.SYSTEM.getValue()).content("You are a helpful assistant.").build();//告知模型他是个助手(设置角色)
        Message userMsg = Message.builder().role(Role.USER.getValue()).content("你好,周末去哪里玩?").build();//对话问题
        msgManager.add(systemMsg);
        msgManager.add(userMsg);
        QwenParam param =
                QwenParam.builder().model(Generation.Models.QWEN_PLUS).messages(msgManager.get())
                        .resultFormat(QwenParam.ResultFormat.MESSAGE)
                        .topP(0.8)
                        .enableSearch(true)
                        .build();
        GenerationResult result = gen.call(param);
        System.out.println(result);//输出回复
        msgManager.add(result);
        System.out.println(JsonUtils.toJson(result));//JSON格式输出回复
        param.setPrompt("找个近点的");//继续问题
        param.setMessages(msgManager.get());
        result = gen.call(param);
        System.out.println(result);
        System.out.println(JsonUtils.toJson(result));
    }


    public static void main(String[] args){
        try {
            callWithMessage();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

上诉代码就是向模型提问周末去哪玩,模型给出回复后,又继续说让他说个近点的地方

AIGC盛行,带你轻松调用开发,AIGC,AIGC,人工智能,机器学习,自然语言处理,神经网络,生成对抗网络,java
AIGC盛行,带你轻松调用开发,AIGC,AIGC,人工智能,机器学习,自然语言处理,神经网络,生成对抗网络,java

补充流式输出

import java.util.Arrays;
import java.util.concurrent.Semaphore;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.aigc.generation.models.QwenParam;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.ResultCallback;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
import io.reactivex.Flowable;
import com.alibaba.dashscope.utils.Constants;

public class Main {
  public static void streamCallWithMessage()
      throws NoApiKeyException, ApiException, InputRequiredException {
     Constants.apiKey="你的API-KEY值";
    Generation gen = new Generation();
    Message userMsg = Message
    .builder()
    .role(Role.USER.getValue())
    .content("如何做西红柿炖牛腩?")
    .build();
    QwenParam param =
        QwenParam.builder().model(Generation.Models.QWEN_PLUS).messages(Arrays.asList(userMsg))
            .resultFormat(QwenParam.ResultFormat.MESSAGE)
            .topP(0.8)
            .enableSearch(true)
            .incrementalOutput(true) // get streaming output incrementally
            .build();
    Flowable<GenerationResult> result = gen.streamCall(param);
    StringBuilder fullContent = new StringBuilder();
    result.blockingForEach(message -> {
      fullContent.append(message.getOutput().getChoices().get(0).getMessage().getContent());
      System.out.println(JsonUtils.toJson(message));
    });
    System.out.println("Full content: \n" + fullContent.toString());
  }

  public static void streamCallWithCallback()
      throws NoApiKeyException, ApiException, InputRequiredException,InterruptedException {
    Generation gen = new Generation();
    Message userMsg = Message
    .builder()
    .role(Role.USER.getValue())
    .content("如何做西红柿炖牛腩?")
    .build();
    QwenParam param = QwenParam
    .builder()
    .model(Generation.Models.QWEN_PLUS)
    .resultFormat(QwenParam.ResultFormat.MESSAGE)
    .messages(Arrays.asList(userMsg))
    .topP(0.8)
    .incrementalOutput(true) // get streaming output incrementally
    .build();
    Semaphore semaphore = new Semaphore(0);
    StringBuilder fullContent = new StringBuilder();
    gen.streamCall(param, new ResultCallback<GenerationResult>() {

      @Override
      public void onEvent(GenerationResult message) {
        fullContent.append(message.getOutput().getChoices().get(0).getMessage().getContent());
        System.out.println(message);
      }
      @Override
      public void onError(Exception err){
        System.out.println(String.format("Exception: %s", err.getMessage()));
        semaphore.release();
      }

      @Override
      public void onComplete(){
        System.out.println("Completed");
        semaphore.release();
      }
      
    });
    semaphore.acquire();
    System.out.println("Full content: \n" + fullContent.toString());
  }
  public static void main(String[] args) {
    try {
      streamCallWithMessage();
    } catch (ApiException | NoApiKeyException | InputRequiredException e) {
      System.out.println(e.getMessage());
    }
    try {
      streamCallWithCallback();
    } catch (ApiException | NoApiKeyException | InputRequiredException | InterruptedException e) {
      System.out.println(e.getMessage());
    }
    System.exit(0);
  }
}

3.体验通义千问VL

下面使用接口实现图片解析

使用官方提供照片

首先大家看一下官方提供的图片:
AIGC盛行,带你轻松调用开发,AIGC,AIGC,人工智能,机器学习,自然语言处理,神经网络,生成对抗网络,java

/**
 * @Version: 1.0.0
 * @Author: Dragon_王
 * @ClassName: test1
 * @Description: TODO描述
 * @Date: 2023/12/28 17:41
 */

import java.util.Arrays;
import java.util.Collections;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;

class test1 {
    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        Constants.apiKey="你的api-key";
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
                .content(Arrays.asList(Collections.singletonMap("image", "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"),
                        Collections.singletonMap("text", "这是什么?"))).build();// 对话的问题
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                .model(MultiModalConversation.Models.QWEN_VL_PLUS)
                .message(userMessage)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(result);
    }

    public static void main(String[] args) {
        try {
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

AIGC盛行,带你轻松调用开发,AIGC,AIGC,人工智能,机器学习,自然语言处理,神经网络,生成对抗网络,java

本地文件

import java.util.Arrays;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import io.reactivex.Flowable;
import com.alibaba.dashscope.utils.Constants;

public class MultiModalConversationLocalFile2 {
    /**
     * sample of use local file
     * Windows file format: file:///D:/test/images/test.png
     * Linux & Mac format: file://The_absolute_local_path
     * 
     */
    public static void callWithLocalFile()
            throws ApiException, NoApiKeyException, UploadFileException {
        Constants.apiKey="你的api-key";
        String localFilePath = "file://The_file_absolute_path"; 
        MultiModalConversation conv = new MultiModalConversation();
        // must create mutable map.
        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
        .content(Arrays.asList(new HashMap<String, Object>(){{put("image", localFilePath);}}, 
        new HashMap<String, Object>(){{put("text", "这是什么?");}})).build();// 对话问题
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                .model(MultiModalConversation.Models.QWEN_VL_PLUS)
                .message(userMessage)
                .build();
        Flowable<MultiModalConversationResult> result = conv.streamCall(param);
        result.blockingForEach(item -> {
            System.out.println(item);
        });
    }

    public static void main(String[] args) {
        try {
            callWithLocalFile();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}


多轮对话

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;

public class Main {
    private static final String modelName = "qwen-vl-plus";
    public static void MultiRoundConversationCall() throws ApiException, NoApiKeyException, UploadFileException {
    	Constants.apiKey="你的api-key";
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalMessage systemMessage = MultiModalMessage.builder().role(Role.SYSTEM.getValue())
        .content(Arrays.asList(Collections.singletonMap("text", "You are a helpful assistant."))).build();

        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
        .content(Arrays.asList(Collections.singletonMap("image", "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"), 
        Collections.singletonMap("text", "图片里有什么动物?"))).build();// 第一个对话问题
        List<MultiModalMessage> messages = new ArrayList<>();
        messages.add(systemMessage);
        messages.add(userMessage);
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                .model(MultiModalConversationUsage2.modelName)
                .messages(messages)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(result);
        // add the result to conversation
        messages.add(result.getOutput().getChoices().get(0).getMessage());
        MultiModalMessage msg = MultiModalMessage.builder().role(Role.USER.getValue())
        .content(Arrays.asList(Collections.singletonMap("text", "图片动物是什么?"))).build();// 第二个对话问题
        messages.add(msg);
        // new messages
        param.setMessages((List)messages);
        result = conv.call(param);
        System.out.print(result);
    }

    public static void main(String[] args) {
        try {
            MultiRoundConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    

流式输出

只是输出采用的方式不一样

import java.util.Arrays;
import java.util.HashMap;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import io.reactivex.Flowable;
import com.alibaba.dashscope.utils.Constants;

public class MultiModalConversationStream {
    public static void streamCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        Constants.apiKey="你的api-key";
        MultiModalConversation conv = new MultiModalConversation();
        // must create mutable map.
        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
        .content(Arrays.asList(new HashMap<String, Object>(){{put("image", "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg");}}, 
        new HashMap<String, Object>(){{put("text", "基于这幅图,讲一个故事");}})).build();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                .model(MultiModalConversation.Models.QWEN_VL_PLUS)
                .message(userMessage)
                .build();
        Flowable<MultiModalConversationResult> result = conv.streamCall(param);
        result.blockingForEach(item -> {
            System.out.println(item);
        });
    }

    public static void main(String[] args) {
        try {
            streamCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

总结

上面就是使用java调用通义千问大模型的案例,上诉代码都可以运行,如果想改变问题,就将对话问题修改就行。如果再自己写一个UI界面的话,你就拥有了自己的AIGC了(虽然是调用的API🌤️)。文章来源地址https://www.toymoban.com/news/detail-763963.html

到了这里,关于AIGC盛行,带你轻松调用开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 中国人工智能学会主办!真实AIGC业务数据驱动,欢迎全球开发者参加

    近期,由百度商业联合中国人工智能学会举办、NVIDIA提供战略支持,百度飞桨承办的“百度商业AI技术创新大赛”正式启动,启动会现场,中国工程院院士、中国人工智能学会理事长、清华大学信息科学技术学院院长戴琼海院士通过视频方式对大赛启动表示祝贺。 戴琼海院士

    2024年02月16日
    浏览(46)
  • AIGC技术盛行之后引起的影响

    虽然人工智能一直都是近几年的热门技术和话题,但是今年技术圈被AI刷爆了,前有chatGPT,后有AIGC,可以说最近的技术圈很热闹。这里先抛开chatGPT不提,就说说AIGC,AIGC其实就是利用人工智能技术来生成内容,它的全称叫AI Generated Content,它具有绘画、写作、作诗等功能,比

    2024年02月16日
    浏览(34)
  • InVideo AI:用人工智能轻松制作视频

    InVideo AI 是一款在线视频制作工具,使用人工智能来帮助用户快速、轻松地制作高质量的视频。该工具提供多种功能,包括: 链接: ai.invideo.io 历史记录:  创建视频: 选择模板:youtube explainer 加入提示词: 输入时长:15秒 输入标题: 输入正文: 选择背景音乐: 选择性别

    2024年02月09日
    浏览(43)
  • 人工智能aigc昆仑

    大家好,今天来聊聊人工智能aigc昆仑,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 标题:探索人工智能AIGC昆仑:开启未来的无限可能 在当今科技日新月异的时代,人工智能已经成为引领未来的重要力量。

    2024年02月20日
    浏览(50)
  • 脸鉴AI开放平台:轻松上手的人工智能算法

    序言 一、提升开发效率工具 1.1封装view窗口 1.2封装常用功能接口 1.3提供基础接口代码块 二、使用介绍 2.1 注册登录 2.2 新建应用 2.3 下载应用 2.4 安装包介绍 2.5 demo项目 2.6 配置demo 2.7 运行demo 三、使用结果 3.1 摄像头采集人脸添加模板 3.2 实时画面1:N人脸检测 3.3 照片测

    2024年02月08日
    浏览(46)
  • 带你搞懂人工智能、机器学习和深度学习!

    不少高校的小伙伴找我聊入门人工智能该怎么起步,如何快速入门,多长时间能成长为中高级工程师(聊下来感觉大多数学生党就是焦虑,毕业即失业,尤其现在就业环境这么差),但聊到最后,很多小朋友连人工智能和机器学习、深度学习的关系都搞不清楚。 今天更文给大

    2024年02月02日
    浏览(46)
  • AIGC迈向通用人工智能时代

    2023年1月30日,AIGC概念股突飞猛涨。一时间,AIGC再次站上风口浪尖。 AIGC(AI Generated Content)是指利用人工智能技术来生成内容,被认为是继UGC、PGC之后的新型内容生产方式,常见的 AI绘画、AI写作 等都属于AIGC的分支。 事实上,AIGC在这一波热议之前,早已悄然兴起。 这要从

    2024年02月09日
    浏览(70)
  • 人工智能时代AIGC绘画实战

    送书第一期 《用户画像:平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 送书第三期 《深入浅出Java虚拟机》 送书第四期 《AI时代项目经理成长之道》 送书第五期 《Kubernetes原生

    2024年02月05日
    浏览(58)
  • 两万字长文带你全面解读生成式人工智能

    本文首发于微信公众号 CVHub,未经授权不得以任何形式售卖或私自转载到其它平台,仅供学习,违者必究! 随着 ChatGPT 的病毒式传播, 生成式人工智能 ( AIGC , a.k.a AI-generated content )因其分析和创造 文本 、 图像 、 视频 以及其他方面的出众能力而俨然成为当下最火热的投资

    2024年02月16日
    浏览(33)
  • AIGC内容分享(四十):生成式人工智能(AIGC)应用进展浅析

    目录 0   引言 1   以ChatGPT为代表的AIGC发展现状 1.1  国外AIGC应用发展现状 1.2  国内AIGC应用发展现状 2   AIGC的技术架构 (1)数据层 (2)算力基础设施层 (3)算法及大模型层 (4)AIGC能力层 (5)AIGC功能层 (6)AIGC应用层 3   AIGC面临的机遇与挑战 3.1  AIGC带来的机遇 (

    2024年02月19日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包