本文介紹WebOffice的文檔AI助手外掛程式,包括功能特性和使用方法等。
文檔AI助手,是一款融入了阿里巴巴千問大模型技術的智能文檔創作協助工具輔助,它能協助您高效地編輯、修飾和翻譯文檔,顯著提升文檔處理的效率與品質。
功能特性
功能分類 | 功能描述 |
繼續寫 | 支援對所選文本智能續寫文檔內容,提供使用者創作和編寫文案的思路和靈感。 |
產生摘要 | 支援對所選文本產生摘要,快速提煉頁面內容的核心要點,更快地把握所選內容主旨。 |
翻譯 | 支援12種語言的翻譯功能,可有效滿足跨語言文檔處理的需求。 |
幫我潤色 | 通過對文本的文法、拼字、用詞、句子結構和整體風格進行最佳化,提高文本的品質和可讀性。 |
豐富內容 | 支援對所選內容進行AI擴寫,增加其內容的豐富度和深度。 |
改寫語氣 | 支援對所選內容做文案描述改寫,支援選擇更專業、更輕鬆、更直白、更自信、更親切這五種模式。 |
使用限制
目前僅適用PC端WebOffice,不支援移動端H5頁面或者小程式端。
開發對接方法
1. 服務端封裝介面
文檔 AI 助手需要調用 OSS 的 x-oss-process 介面,調用介面前需要先綁定IMM Project到OSS Bucket。

綁定完成後,可以進入文檔智能處理選項卡申請配額:

服務端需要封裝一個介面,用於擷取文檔AI相關介面的簽名URL。如:/file/get_ai_process_url。
服務端主要邏輯樣本:
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
import java.net.URL;
import java.util.Date;
public class Demo {
public static void main(String[] args) throws Throwable {
// Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 填寫Endpoint對應的Region資訊,例如cn-hangzhou。
String region = "cn-hangzhou";
// 強烈建議不要把訪問憑證儲存到工程代碼裡,否則可能導致訪問憑證泄露,威脅您帳號下所有資源的安全。本程式碼範例以從環境變數中擷取訪問憑證為例。運行本程式碼範例之前,請先配置環境變數。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// 填寫Bucket名稱,例如examplebucket。
String bucketName = "examplebucket";
// 填寫Object完整路徑,完整路徑中不能包含Bucket名稱。
String objectName = "exampledir/exampleobject.docx";
// 建立OSSClient執行個體。
// 當OSSClient執行個體不再使用時,調用shutdown方法以釋放資源。
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
// 顯式聲明使用 V4 簽名演算法
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// 指定簽名URL到期時間為10分鐘。
Date expiration = new Date(new Date().getTime() + 1000 * 60 * 10 );
GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.POST);
req.setExpiration(expiration);
req.setContentType("text/plain; charset=UTF-8");
// 注意Process這裡傳Null 字元串
// 添加子資源參數
req.addQueryParameter("x-oss-process", null);
URL signedUrl = ossClient.generatePresignedUrl(req);
System.out.println(signedUrl);
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
# 填寫Bucket名稱,例如examplebucket。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
# 填寫請求預覽的文檔完整路徑,完整路徑中不包含Bucket名稱。
key = 'example.docx'
# 產生帶簽名的URL,並指定到期時間為10分鐘。到期時間單位為秒。
# 注意x-oss-process這裡傳Null 字元串
url = bucket.sign_url('POST', key, 10 * 60, headers={'Content-Type': 'text/plain; charset=UTF-8'}, params={'x-oss-process': ''})
print(url)package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
/// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 建立OSSClient執行個體。
// yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 指定檔案所在Bucket的名稱,例如examplebucket。
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err); os.Exit(-1)
}
// 填寫請求預覽的文檔完整路徑,完整路徑中不包含Bucket名稱。
ossObjectName := "exampledir/exampleobject.docx"
// 設定樣式,樣式中包含文檔預覽參數。
// 產生帶簽名的URL,並指定到期時間為600s。
// 注意Process這裡傳Null 字元串
signedURL, err := bucket.SignURL(ossObjectName, oss.HTTPPost, 600, oss.ContentType("text/plain; charset=UTF-8"), oss.Process(""))
if err != nil {
fmt.Println("Error:", err); os.Exit(-1)
} else {
fmt.Println(signedURL)
}
}const OSS = require('ali-oss');
const client = new OSS({
// yourregion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
region: 'yourregion',
// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
// yourbucketname填寫儲存空間名稱。
bucket: 'yourbucketname'
});
// 設定樣式,樣式中包含文檔預覽參數。
// 產生帶簽名的URL,並指定到期時間為10分鐘。
const signUrl = clientsignatureUrl(objectKey, {
method: 'POST',
subResource: {
'x-oss-process': '', // 注意,這裡傳Null 字元串
},
expires: 60*10, // 單位 秒
'Content-Type': 'text/plain; charset=UTF-8',
});
console.log("signUrl="+signUrl);附錄:簽名涉及的介面包括:
2. 前端JS-Plugins使用
在對接了文檔編輯 JS-SDK 的基礎上,再引入script:
<!-- 引入 js-sdk -->
<script src="https://g.alicdn.com/IMM/office-js/1.1.19/aliyun-web-office-sdk.min.js"></script>
<!-- 引入外掛程式 sdk -->
<script src="https://g.alicdn.com/IMM/office-js-plugins/1.3.0/aliyun-web-office-plugins.min.js"><script>樣本中的1.1.19表示JS-SDK的版本號碼,請根據實際填寫,最新版本請參見JS-SDK版本。
樣本中的1.3.0表示JS-Plugins的版本號碼,請根據實際填寫,最新版本請參見JS-SDK外掛程式版本。
初始化外掛程式
在調用 JS-SDK 初始化方法aliyun.config之後,調用文檔AI助手初始化方法:aliyun.initAIPlugin。
let ins = aliyun.config({
....
})
// 等待 ready 後再調用 aliyun.initAIPlugin
await ins.ready();
// 使用 AI 外掛程式
aliyun.initAIPlugin({
sdkInstance: ins, // 傳入 sdk 執行個體
// aiHelperLink: 'https://www.alibabacloud.com/help/xxxx', // 面板上AI協助文檔連結
async onGetAIProcessUrl({ content_type, content_md5 }){
/** 下面擷取 x-oss-process url 邏輯,需要調用封裝的服務端介面 */
let opt = {
content_type,
// content_md5,
file_name: "test-object.docx",
};
let { ai_process_url } = await $.post("/file/get_ai_process_url", opt);
return {
ai_process_url, // 必選
// content_md5, // 可選。 如果不傳,則不簽名 content_md5 項
};
},
async onFeedback(info){
// 記錄
}
})2.1. initAIPlugin 參數說明
欄位 | 類型 | 必選 | 說明 |
sdkInstance | Object | 是 | SDK 執行個體。即 |
onGetAIProcessUrl | ({content_type: string, content_md5:string })=>Promise<{ai_process_url:string,content_md5?:string}> | 是 | 擷取 x-oss-process 的 URL簽名地址的方法。 |
aiHelperLink | string | 否 | 面板上AI協助文檔說明連結 |
onFeedback | (info:FeedbackInfo)=>void | 否 | 參數 FeedbackInfo |
2.2. FeedbackInfo 欄位說明
欄位 | 類型 | 說明 |
type | string | 取值: 'thumb-up', 'thumb-down' |
data | object | 具體反饋資訊 |
使用者使用方式
在文字(word)編輯介面,點擊開始工具列右側“文檔AI助手”或者按快速鍵 (windows 使用Alt + /, mac OS使用 Control + /),可以喚醒文檔AI助手的菜單,對選中文字或者游標位置的文字進行最佳化。
