ModelScope中,用java调用接口有相关示例吗?

ModelScope中,用java调用接口有相关示例吗?

展开
收起
小小爱吃香菜 2024-02-07 11:32:30 169 分享 版权
阿里云 AI 助理回答

在ModelScope中,使用Java调用接口的相关示例可以通过阿里云提供的SDK和API文档来实现。以下是基于知识库资料整理的详细步骤和代码示例,帮助您快速上手。


1. 前提条件

在调用接口之前,请确保完成以下准备工作: - 创建AccessKey ID和AccessKey Secret:这是调用阿里云服务的必要凭证。如果尚未创建,请参考官方文档获取。 - 获取Workspace ID和App ID: - Workspace ID:登录管理控制台,进入业务空间管理页面,找到对应的Workspace ID。 - App ID:在“应用广场”中查看通义晓蜜CCAI-对话分析AIO应用的详情,并在“我的应用”中获取应用ID。


2. 安装SDK

根据您的需求选择同步或异步调用方式,并在项目中添加相应的Maven依赖。

同步调用依赖

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>contactcenterai20240603</artifactId>
    <version>3.0.0</version>
</dependency>

异步调用依赖

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alibabacloud-contactcenterai20240603</artifactId>
    <version>3.0.0</version>
</dependency>

3. 示例代码

异步流式调用

以下代码展示了如何通过异步流式调用接口进行对话分析:

public class CcaiPaasTest {
    private static String accessKeyId = "YOUR_ACCESS_KEY_ID";
    private static String accessKeySecret = "YOUR_ACCESS_KEY_SECRET";
    private static String workspaceId = "YOUR_WORKSPACEID";
    private static String appId = "YOUR_APPID";

    private static StaticCredentialProvider provider = StaticCredentialProvider.create(
            Credential.builder()
                    .accessKeyId(accessKeyId)
                    .accessKeySecret(accessKeySecret)
                    .build()
    );

    private static AsyncClient client = AsyncClient.builder()
            .region("cn-shanghai")
            .credentialsProvider(provider)
            .serviceConfiguration(Configuration.create()
                    .setSignatureVersion(SignatureVersion.V3)
                    .setSignatureAlgorithmV3(SignatureAlgorithm.ACS3_HMAC_SHA256)
            ).overrideConfiguration(
                    ClientOverrideConfiguration.create()
                            .setProtocol("HTTPS")
                            .setEndpointOverride("contactcenterai.cn-shanghai.aliyuncs.com")
            ).build();

    public static void main(String[] args) throws Exception {
        List<AnalyzeConversationRequest.Sentences> messageList = new ArrayList<>();
        messageList.add(AnalyzeConversationRequest.Sentences.builder().role("agent").text("请问您想咨询五险一金哪方面的问题呢").build());
        messageList.add(AnalyzeConversationRequest.Sentences.builder().role("user").text("怎么领取五险一金呢").build());

        List<String> resultTypes = new ArrayList<>();
        resultTypes.add("summary");

        AnalyzeConversationRequest.Dialogue dialogue = AnalyzeConversationRequest.Dialogue.builder()
                .sessionId("session-01")
                .sentences(messageList).build();

        AnalyzeConversationRequest completionParam = AnalyzeConversationRequest.builder()
                .modelCode("tyxmPlus")
                .resultTypes(resultTypes)
                .workspaceId(workspaceId)
                .appId(appId)
                .dialogue(dialogue)
                .requestConfiguration(RequestConfiguration.create()
                        .setHttpMethod(HttpMethod.POST))
                .stream(true).build();

        ResponseIterable<AnalyzeConversationResponseBody> x = client.analyzeConversationWithResponseIterable(completionParam);
        ResponseIterator<AnalyzeConversationResponseBody> iterator = x.iterator();
        String lastTxt = "";
        while (iterator.hasNext()) {
            AnalyzeConversationResponseBody event = iterator.next();
            lastTxt = event.getText();
        }

        System.out.println("ALL***********************");
        System.out.println(lastTxt);
        System.out.println("请求成功的请求头值:");
        System.out.println(x.getStatusCode());
        System.out.println(x.getHeaders());
    }
}

同步非流式调用

以下代码展示了如何通过同步非流式调用接口进行对话分析:

public class CcaiPaasTest {
    public static void main(String[] args) throws Exception {
        String accessKeyId = "YOUR_ACCESS_KEY_ID";
        String accessKeySecret = "YOUR_ACCESS_KEY_SECRET";
        String workspaceId = "YOUR_WORKSPACEID";
        String appId = "YOUR_APPID";

        Config config = new Config();
        config.setAccessKeyId(accessKeyId)
              .setAccessKeySecret(accessKeySecret)
              .setEndpoint("contactcenterai.cn-shanghai.aliyuncs.com")
              .setRegionId("cn-shanghai")
              .setProtocol("HTTPS");

        Client client = new Client(config);
        com.aliyun.contactcenterai20240603.models.AnalyzeConversationRequest request = 
                new com.aliyun.contactcenterai20240603.models.AnalyzeConversationRequest();

        // 设置请求参数
        request.setWorkspaceId(workspaceId);
        request.setAppId(appId);
        request.setModelCode("tyxmPlus");

        // 构建对话内容
        List<AnalyzeConversationRequest.Sentences> messageList = new ArrayList<>();
        messageList.add(AnalyzeConversationRequest.Sentences.builder().role("agent").text("请问您想咨询五险一金哪方面的问题呢").build());
        messageList.add(AnalyzeConversationRequest.Sentences.builder().role("user").text("怎么领取五险一金呢").build());

        AnalyzeConversationRequest.Dialogue dialogue = AnalyzeConversationRequest.Dialogue.builder()
                .sessionId("session-01")
                .sentences(messageList).build();

        request.setDialogue(dialogue);

        // 发起请求并处理响应
        com.aliyun.contactcenterai20240603.models.AnalyzeConversationResponse response = client.analyzeConversation(request);
        System.out.println(response.getBody().getText());
    }
}

4. 注意事项

  • 签名认证:所有请求均需通过AccessKey ID和AccessKey Secret进行签名认证,确保调用的安全性。
  • 异步任务查询:如果接口返回task_id,则需要通过异步任务查询接口获取最终结果。
  • 区域配置:请根据实际需求设置正确的区域(如cn-shanghai),并确保Endpoint与区域匹配。

通过以上步骤和代码示例,您可以轻松使用Java调用ModelScope中的相关接口。如果有进一步的需求或问题,请参考官方文档或联系技术支持。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!欢迎加入技术交流群:微信公众号:魔搭ModelScope社区,钉钉群号:44837352

热门讨论

热门文章

还有其他疑问?
咨询AI助理