SDK快速开始

更新时间:
复制为 MD 格式

通过阿里云 SDK 调用 IQS 服务,使用 AccessKey(AK/SK)认证,如下的调用代码统一使用联网搜索(UnifiedSearch)接口作为示例。

获取子账号AccessKey

如果您需要复用已经存在的AccessKey,只需要对子账号授权:AliyunIQSFullAccess

创建 RAM 用户并授权

创建RAM用户并授权

创建 AccessKey

RAM用户创建AccessKey

API列表

分类

API

说明

Search

UnifiedSearch

联网搜索WebSearch

MultimodalSearch

多模态搜索(搜图)API

ReadPage

ReadPageBasic

网页解析标准版 API

ReadPageScrape

网页解析增强版 API

Vertical

MedicalAnswer

医疗问答 API(MedicalAnswer)

MedicalKnowledge

健康图谱 API(MedicalKnow)

Answer

OmniAnswer

Python SDK

安装SDK

pip3 install alibabacloud_iqs20241111==1.7.3

调用代码(同步)

以联网搜索(unified_search)接口调用为例

import os

from Tea.exceptions import TeaException
from alibabacloud_iqs20241111 import models
from alibabacloud_iqs20241111.client import Client
from alibabacloud_tea_openapi import models as open_api_models


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client() -> Client:
        config = open_api_models.Config(
            # TODO: 使用您的AK/SK进行替换(建议通过环境变量加载)
            access_key_id='$YOUR_ACCESS_KEY',
            access_key_secret='$YOUR_ACCESS_SECRET'
        )
        config.endpoint = f'iqs.cn-zhangjiakou.aliyuncs.com'
        return Client(config)

    @staticmethod
    def main() -> None:
        client = Sample.create_client()
        advancedParams = {
            "startPublishedDate": "2025-10-01",
            "endPublishedDate": "2025-10-10"
        }
        run_instances_request = models.UnifiedSearchRequest(
            body=models.UnifiedSearchInput(
                query='杭州美食',
                time_range='NoLimit',
                contents=models.RequestContents(
                    summary=False,
                    main_text=True,
                ),
                advanced_params=advancedParams
            )
        )
        try:
            response = client.unified_search(run_instances_request)
            print(
                f"api success, request_id:{response.body.request_id}, size :{len(response.body.page_items)}, server_cost:{response.body.search_information.search_time}")
            if len(response.body.scene_items) > 0:
                print(f"scene_items:{response.body.scene_items[0]}")
            for index, item in enumerate(response.body.page_items):
                print(f"{index}. {'-' * 20}")
                print(f"title:{item.title}")
                print(f"snippet:{item.snippet}")
                print(f"summary:{item.summary}")
                print(f"published_time:{item.published_time}")
                print(f"link:{item.link}")
                print(f"rerank_score:{item.rerank_score}")

        except TeaException as e:
            code = e.code
            request_id = e.data.get("requestId")
            message = e.data.get("message")
            print(f"api exception, requestId:{request_id}, code:{code}, message:{message}")


if __name__ == '__main__':
    Sample.main()

调用代码(异步)

import asyncio
import os
import time

from Tea.exceptions import TeaException
from alibabacloud_iqs20241111 import models
from alibabacloud_iqs20241111.client import Client
from alibabacloud_tea_openapi import models as open_api_models


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client() -> Client:
        config = open_api_models.Config(
            # TODO: 使用您的AK/SK进行替换(建议通过环境变量加载)
            access_key_id=os.environ.get('ACCESS_KEY'),
            access_key_secret=os.environ.get('ACCESS_SECRET')

        )
        config.endpoint = f'iqs.cn-zhangjiakou.aliyuncs.com'
        return Client(config)

    @staticmethod
    async def main_async() -> None:
        start = time.time()
        client = Sample.create_client()
        run_instances_request = models.UnifiedSearchRequest(
            body=models.UnifiedSearchInput(
                query='杭州美食',
                time_range='NoLimit',
                contents=models.RequestContents(
                    # 注意:sumamry功能会单独收费                
                    summary=True,
                    main_text=True,
                )
            )
        )
        try:
            # 使用异步方法
            response = await client.unified_search_async(run_instances_request)
            print(
                f"api success, request_id:{response.body.request_id}, size :{len(response.body.page_items)}, server_cost:{response.body.search_information.search_time}")
            if len(response.body.scene_items) > 0:
                print(f"scene_items:{response.body.scene_items[0]}")
            for index, item in enumerate(response.body.page_items):
                print(f"{index}. {'-' * 20}")
                print(f"title:{item.title}")
                print(f"snippet:{item.snippet}")
                print(f"summary:{item.summary}")
                print(f"published_time:{item.published_time}")
                print(f"link:{item.link}")
                print(f"rerank_score:{item.rerank_score}")
        except TeaException as e:
            code = e.code
            request_id = e.data.get("requestId")
            message = e.data.get("message")
            print(f"api exception, requestId:{request_id}, code:{code}, message:{message}")

if __name__ == '__main__':
    asyncio.run(Sample.main_async())

Java SDK

安装SDK

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>iqs20241111</artifactId>
    <version>1.7.3</version>
</dependency>

调用代码

package com.aliyun.iqs.example;

import com.aliyun.iqs20241111.Client;
import com.aliyun.iqs20241111.models.*;
import com.aliyun.teaopenapi.models.Config;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class UnifiedSearchExample {
    public static void main(String[] args) throws Exception {
        Client client = initClient();
        invoke(client, "杭州美食", "NoLimit");
    }

    private static Client initClient() throws Exception {
        // TODO: 使用您的AK/SK进行替换(建议通过环境变量加载)
        String accessKeyId = "$YOUR_ACCESS_KEY";
        String accessKeySecret = "$YOUR_ACCESS_SECRET";
        
        Config config = new Config()
            .setAccessKeyId(accessKeyId)
            .setAccessKeySecret(accessKeySecret);

        config.setEndpoint("iqs.cn-zhangjiakou.aliyuncs.com");
        return new Client(config);
    }

    private static void invoke(Client client, String query, String timeRange) {
        UnifiedSearchInput input = new UnifiedSearchInput();
        input.setQuery(query);
        input.setTimeRange(timeRange);
        
        // 时间范围条件可选
        Map<String, String> advancedParams = new HashMap<>();
        advancedParams.put("startPublishedDate","2025-10-01");
        advancedParams.put("endPublishedDate","2025-10-10");
        input.setAdvancedParams(advancedParams);

        // 注意:sumamry功能会单独收费
        RequestContents requestContents = new RequestContents().setSummary(true).setMainText(true);
        input.setContents(requestContents);
        UnifiedSearchRequest request = new UnifiedSearchRequest().setBody(input);

        try {
            UnifiedSearchResponse response = client.unifiedSearch(request);
            UnifiedSearchOutput result = response.getBody();

            printOutput(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void printOutput(UnifiedSearchOutput output) {
        // 使用 GsonBuilder 创建带格式化的 Gson 实例
        Gson gson = new GsonBuilder()
            .setPrettyPrinting()
            .disableHtmlEscaping()
            .create();

        // 输出格式化的 JSON
        String prettyJson = gson.toJson(output);
        System.out.println(prettyJson);
    }
}

Go SDK

安装SDK

require (
  github.com/alibabacloud-go/iqs-20241111 v1.7.3
  github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.10
)

调用代码

package main

import (
	"fmt"
	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
	iqs20241111 "github.com/alibabacloud-go/iqs-20241111/client"
	util "github.com/alibabacloud-go/tea-utils/v2/service"
	"github.com/alibabacloud-go/tea/tea"
	"log"
)

const endpointURL = "iqs.cn-zhangjiakou.aliyuncs.com"

func createClient() (*iqs20241111.Client, error) {
	// TODO: 使用您的AK/SK进行替换
	accessKeyID := "YOUR_ACCESS_KEY"
	accessKeySecret := "YOUR_ACCESS_SECRET"

	if accessKeyID == "" || accessKeySecret == "" {
		return nil, fmt.Errorf("ACCESS_KEY or ACCESS_SECRET environment variable is not set")
	}

	config := &openapi.Config{
		AccessKeyId:     tea.String(accessKeyID),
		AccessKeySecret: tea.String(accessKeySecret),
		Endpoint:        tea.String(endpointURL),
	}

	return iqs20241111.NewClient(config)
}

func runGenericSearch(client *iqs20241111.Client) error {
	body := &iqs20241111.UnifiedSearchInput{
		Query:     tea.String("杭州美食"),
		TimeRange: tea.String("NoLimit"),
		//注意:sumamry功能会单独收费
		Contents: &iqs20241111.RequestContents{
			Summary:  tea.Bool(true),
			MainText: tea.Bool(true),
		},
	}
	request := &iqs20241111.UnifiedSearchRequest{
		body,
	}
	runtime := &util.RuntimeOptions{}

	resp, err := client.UnifiedSearchWithOptions(request, nil, runtime)
	if err != nil {
		return fmt.Errorf("generic search failed: %w", err)
	}

	fmt.Printf("[%s] response: %s\n", *resp.Body.RequestId, resp.Body)
	return nil
}

func main() {
	client, err := createClient()
	if err != nil {
		log.Fatalf("Failed to create client: %v", err)
	}

	if err := runGenericSearch(client); err != nil {
		log.Fatalf("Error running generic search: %v", err)
	}
}

Nodejs SDK

安装SDK

npm install @alicloud/iqs20241111@1.7.3

调用代码

import * as $OpenApi from '@alicloud/openapi-client';
import * as $IQS20241111 from '@alicloud/iqs20241111';

class Sample {
  static createClient(): $IQS20241111.default {
    const config = new $OpenApi.Config({
      // TODO: 使用您的AK/SK进行替换(建议通过环境变量加载)
      accessKeyId: process.env.ALIYUN_ACCESS_KEY,
      accessKeySecret: process.env.ALIYUN_ACCESS_SECRET,
    });
    config.endpoint = 'iqs.cn-zhangjiakou.aliyuncs.com';
    return new $IQS20241111.default(config);
  }

  static async main(): Promise<void> {
    const client = Sample.createClient();
    
    const advancedParams = {
      startPublishedDate: '2025-10-01',
      endPublishedDate: '2025-10-10',
    };

    const runInstancesRequest = new $IQS20241111.UnifiedSearchRequest({
      body: new $IQS20241111.UnifiedSearchInput({
        query: '杭州美食',
        timeRange: 'NoLimit',
        contents: new $IQS20241111.RequestContents({
          // 注意:summary功能会单独收费
          summary: true,
          mainText: true,
        }),
        advancedParams: advancedParams,
      }),
    });

    try {
      const response = await client.unifiedSearch(runInstancesRequest);
      
      if (!response.body) {
        console.error('响应体为空');
        return;
      }

      console.log(
        `api success, request_id:${response.body.requestId}, size:${response.body.pageItems?.length || 0}, server_cost:${response.body.searchInformation?.searchTime}`
      );

      if (response.body.sceneItems && response.body.sceneItems.length > 0) {
        console.log(`scene_items:${JSON.stringify(response.body.sceneItems[0])}`);
      }

      response.body.pageItems?.forEach((item: any, index: number) => {
        console.log(`${index}. ${'-'.repeat(20)}`);
        console.log(`title:${item.title}`);
        console.log(`snippet:${item.snippet}`);
        console.log(`summary:${item.summary}`);
        console.log(`published_time:${item.publishedTime}`);
        console.log(`link:${item.link}`);
        console.log(`rerank_score:${item.rerankScore}`);
      });
    } catch (error: any) {
      const code = error.code;
      const requestId = error.data?.requestId;
      const message = error.message;
      console.error(`api exception, requestId:${requestId}, code:${code}, message:${message}`);
    }
  }
}

Sample.main();