Fitur penyesuaian nada dokumen cerdas menyesuaikan nada dan struktur kalimat dokumen agar terdengar lebih profesional, santai, atau langsung.
Prasyarat
Proyek Intelligent Media Management (IMM) telah disambungkan ke bucket Object Storage Service (OSS). Untuk informasi selengkapnya tentang cara menyambungkan proyek melalui Konsol OSS, lihat Getting started. Untuk informasi selengkapnya tentang cara menyambungkan proyek dengan memanggil operasi API, lihat AttachOSSBucket.
Catatan penggunaan
Fitur penyesuaian nada dokumen cerdas hanya mendukung pemrosesan sinkron menggunakan parameter `x-oss-process`.
Anda harus mengirim permintaan menggunakan metode POST.
-
Akses anonim akan ditolak.
-
Anda harus memiliki izin yang diperlukan untuk menggunakan fitur ini. Untuk informasi selengkapnya, lihat permissions.
Parameter
Action: doc/rephrase
Tabel berikut menjelaskan parameter tersebut.
Parameter | Type | Wajib | Deskripsi |
tone | string | Ya | Nada target untuk mengubah susunan dokumen. Nilai yang valid:
|
content | string | Ya | Konten yang akan diubah susunannya. Konten harus dikodekan dalam Base64 yang aman untuk URL. Catatan Panjang maksimum adalah 19.500 byte. |
format | string | Tidak | Metode pengembalian data. Nilai yang valid:
|
Tabel berikut menjelaskan parameter respons.
Parameter | Type | Deskripsi |
RequestId | string | ID permintaan. |
Output | struct | Hasil output. Node anak: Text, FinishReason |
Text | string | Hasil yang diperoleh dari pemrosesan permintaan. Node induk: Output |
FinishReason | string | Menunjukkan status saat ini dari proses generasi. Nilai yang valid:
Node induk: Output |
Gunakan REST API
Saat menggunakan REST API untuk mengubah susunan dokumen, Anda harus menentukan nama file. Nama file hanya berfungsi sebagai placeholder. Fitur ini menggunakan nilai parameter `content` sebagai teks yang akan diubah susunannya.
Gunakan mode reguler untuk mengubah susunan dokumen
Metode pemrosesan
File yang diproses: example.doc
Teks yang diubah susunannya: "Empat Novel Klasik Tiongkok, juga dikenal sebagai Empat Mahakarya Sastra Tiongkok, adalah empat novel klasik Tiongkok berbasis bab: 'Romance of the Three Kingdoms', 'Journey to the West', 'Water Margin', dan 'Dream of the Red Chamber'."
Nada target: straightforward
Contoh pemrosesan
POST /example.doc?x-oss-process HTTP/1.1
Host: doc-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
x-oss-process=doc/rephrase,tone_straightforward,content_5Zub5aSn5ZCN6JGX77yM5Y2z5Zub5aSn5bCP6K-05ZCN6JGX77yM5piv5oyH44CK5LiJ5Zu95ryU5LmJ44CL44CB44CK6KW_5ri46K6w44CL44CB44CK5rC05rWS5Lyg44CL44CB44CK57qi5qW85qKm44CLNOmDqOS4reWbveWPpOWFuOeroOWbnuWwj-ivtOOAgg==Contoh respons
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Thu, 10 Aug 2023 11:09:00 GMT
Content-Type: application/json;charset=UTF-8
Connection: close
Vary: Accept-Encoding
x-oss-request-id: 65969DD74479D83039EBE00E
x-oss-server-time: 2010
Content-Encoding: gzip
{
"RequestId":"65969DD74479D83039EBE00E",
"Output":{
"Text":"China's Four Great Classical Novels, which are four very famous novels, refer to these four ancient Chinese epic chapter-based novels: 'Romance of the Three Kingdoms', 'Journey to the West', 'Water Margin', and 'Dream of the Red Chamber'.",
"FinishReason":"stop"
}
}Gunakan SSE untuk mengubah susunan dokumen
Metode pemrosesan
File yang diproses: example.doc
Teks yang diubah susunannya: "Empat Novel Klasik Tiongkok, juga dikenal sebagai Empat Mahakarya Sastra Tiongkok, adalah empat novel klasik Tiongkok berbasis bab: 'Romance of the Three Kingdoms', 'Journey to the West', 'Water Margin', dan 'Dream of the Red Chamber'."
Nada target: straightforward
Metode respons: event-stream
Contoh pemrosesan
POST /example.doc?x-oss-process HTTP/1.1
Host: doc-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
x-oss-process=doc/rephrase,tone_straightforward,format_event-stream,content_5Zub5aSn5ZCN6JGX77yM5Y2z5Zub5aSn5bCP6K-05ZCN6JGX77yM5piv5oyH44CK5LiJ5Zu95ryU5LmJ44CL44CB44CK6KW_5ri46K6w44CL44CB44CK5rC05rWS5Lyg44CL44CB44CK57qi5qW85qKm44CLNOmDqOS4reWbveWPpOWFuOeroOWbnuWwj-ivtOOAgg==Contoh respons
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Thu, 10 Aug 2023 11:20:11 GMT
Content-Type: text/event-stream;charset=UTF-8
Transfer-Encoding: chunked
Connection: close
x-oss-request-id: 65969D744479D83837AEE00E
x-oss-server-time: 587
id: 0
event: Result
data: {"RequestId":"65969D744479D83837AEE00E","Output":{"Text":"China's","FinishReason":"null"}}
id: 1
event: Result
data: {"RequestId":"65969D744479D83837AEE00E","Output":{"Text":"China's Four Great","FinishReason":"null"}}
id: 2
event: Result
data: {"RequestId":"65969D744479D83837AEE00E","Output":{"Text":"China's Four Great Classical","FinishReason":"null"}}
id: 3
event: Result
data: {"RequestId":"65969D744479D83837AEE00E","Output":{"Text":"China's Four Great Classical Novels, which are four","FinishReason":"null"}}
id: 4
event: Result
data: {"RequestId":"65969D744479D83837AEE00E","Output":{"Text":"China's Four Great Classical Novels, which are four very famous novels, refer to 'Romance of the Three","FinishReason":"null"}}
id: 5
event: Result
data: {"RequestId":"65969D744479D83837AEE00E","Output":{"Text":"China's Four Great Classical Novels, which are four very famous novels, refer to 'Romance of the Three Kingdoms' and 'Journey to the West","FinishReason":"null"}}
id: 6
event: Result
data: {"RequestId":"65969D744479D83837AEE00E","Output":{"Text":"China's Four Great Classical Novels, which are four very famous novels, refer to 'Romance of the Three Kingdoms', 'Journey to the West', 'Water Margin', and","FinishReason":"null"}}
id: 7
event: Result
data: {"RequestId":"65969D744479D83837AEE00E","Output":{"Text":"China's Four Great Classical Novels, which are four very famous novels, refer to 'Romance of the Three Kingdoms', 'Journey to the West', 'Water Margin', and 'Dream of the Red Chamber', these four classic ancient Chinese","FinishReason":"null"}}
id: 8
event: Result
data: {"RequestId":"65969D744479D83837AEE00E","Output":{"Text":"China's Four Great Classical Novels, which are four very famous novels, refer to 'Romance of the Three Kingdoms', 'Journey to the West', 'Water Margin', and 'Dream of the Red Chamber', these four classic ancient Chinese epic novels.","FinishReason":"null"}}
id: 9
event: Result
data: {"RequestId":"65969D744479D83837AEE00E","Output":{"Text":"China's Four Great Classical Novels, which are four very famous novels, refer to 'Romance of the Three Kingdoms', 'Journey to the West', 'Water Margin', and 'Dream of the Red Chamber', these four classic ancient Chinese epic novels.","FinishReason":"stop"}}Gunakan SDK
Contoh kode berikut menunjukkan cara mengubah susunan dokumen menggunakan kit pengembangan perangkat lunak (SDK) umum. Untuk menggunakan SDK lain, sesuaikan kode berdasarkan contoh ini.
Java
Diperlukan Java SDK versi 3.17.4 atau yang lebih baru.
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.common.utils.BinaryUtil;
import com.aliyun.oss.common.utils.IOUtils;
import com.aliyun.oss.model.GenericResult;
import com.aliyun.oss.model.ProcessObjectRequest;
import java.io.IOException;
import java.util.Formatter;
public class Demo {
public static void main(String[] args) throws ClientException, com.aliyuncs.exceptions.ClientException {
// Tetapkan yourEndpoint ke endpoint wilayah tempat bucket Anda berada.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan ID wilayah Alibaba Cloud, misalnya cn-hangzhou.
String region = "cn-hangzhou";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket.
String bucketName = "examplebucket";
// Tentukan nama file, yang hanya digunakan sebagai placeholder. Konten file ini tidak dibaca selama proses penyesuaian nada dokumen cerdas.
String key ="example.docx";
// Tentukan konten teks yang akan diubah susunannya.
String content = "yourTxt";
String encodeContent = BinaryUtil.toBase64String(content.getBytes()).replaceAll("\\+","-")
.replaceAll("/","_").replaceAll("=","");
// Buat instance OSSClient.
// Setelah instance OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber daya.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
StringBuilder sbStyle = new StringBuilder();
Formatter styleFormatter = new Formatter(sbStyle);
// Bangun instruksi pemrosesan untuk penyesuaian nada dokumen cerdas.
styleFormatter.format("doc/rephrase,tone_straightforward,content_%s",
encodeContent);
System.out.println(sbStyle.toString());
ProcessObjectRequest request = new ProcessObjectRequest(bucketName, key, sbStyle.toString());
GenericResult processResult = ossClient.processObject(request);
String json = IOUtils.readStreamAsString(processResult.getResponse().getContent(), "UTF-8");
processResult.getResponse().getContent().close();
System.out.println(json);
} catch (OSSException oe) {
System.out.println("Terjadi OSSException, yang berarti permintaan Anda sampai ke OSS, "
+ "tetapi ditolak dengan respons error karena suatu alasan.");
System.out.println("Pesan Error:" + oe.getErrorMessage());
System.out.println("Kode Error:" + oe.getErrorCode());
System.out.println("ID Permintaan:" + oe.getRequestId());
System.out.println("ID Host:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Terjadi ClientException, yang berarti klien mengalami "
+ "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
+ "misalnya tidak dapat mengakses jaringan.");
System.out.println("Pesan Error:" + ce.getMessage());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
PHP
Diperlukan PHP SDK versi 2.7.0 atau yang lebih baru.
<?php
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
$ak = getenv('OSS_ACCESS_KEY_ID');
$sk = getenv('OSS_ACCESS_KEY_SECRET');
// Tentukan nama bucket, misalnya examplebucket.
$bucket = 'examplebucket';
// Tentukan nama file, yang hanya digunakan sebagai placeholder. Konten file ini tidak dibaca selama proses penyesuaian nada dokumen cerdas.
$objectKey = 'example.docx';
// Tentukan konten teks yang akan diubah susunannya.
$txt = "yourTxt";
$base64url = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($txt));
// Bangun instruksi untuk penyesuaian nada dokumen cerdas.
$body = sprintf("x-oss-process=doc/rephrase,tone_straightforward,content_%s", $base64url);
$httpVerb = 'POST';
$contentMd5 = base64_encode(md5($body, true));
$contentType = '';
$date = gmdate('D, d M Y H:i:s T');
$stringToSign = $httpVerb . "\n" . $contentMd5 . "\n" . $contentType . "\n" . $date . "\n" . "/{$bucket}/{$objectKey}?x-oss-process";
$signature = base64_encode(hash_hmac('sha1', $stringToSign, $sk, true));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://{$bucket}.oss-cn-hangzhou.aliyuncs.com/{$objectKey}?x-oss-process");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Date: ' . $date,
'Authorization: OSS ' . $ak . ':' . $signature,
'Content-Type: ' . $contentType,
'Content-Md5:' . $contentMd5,
));
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
$response = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($response === false) {
echo "Error: " . curl_error($ch);
} else {
if ($httpcode == 200) {
var_dump($response);
} else {
echo "Error: Kode HTTP " . $httpcode;
}
}Go
Diperlukan Go SDK versi 3.0.2 atau yang lebih baru.
package main
import (
"encoding/base64"
"encoding/json"
"fmt"
"io"
"os"
"strings"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
type TextData struct {
RequestId string `json:"RequestId"`
Output struct {
Text string `json:"Text"`
FinishReason string `json:"FinishReason"`
} `json:"Output"`
}
func main() {
// Dapatkan kredensial akses temporary dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET, dan OSS_SESSION_TOKEN telah disetel.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instance OSSClient.
client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider), oss.AuthVersion(oss.AuthV4), oss.Region("cn-hangzhou"))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Tentukan nama bucket, misalnya examplebucket.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
params := make(map[string]interface{})
params["x-oss-process"] = nil
// Tentukan konten teks yang akan diubah susunannya.
txt := "yourTxt"
// Bangun instruksi pemrosesan untuk penyesuaian nada dokumen cerdas.
data := fmt.Sprintf("x-oss-process=doc/rephrase,tone_straightforward,content_%v", base64.URLEncoding.EncodeToString([]byte(txt)))
// example.docx adalah file dalam bucket yang digunakan sebagai placeholder. Konten file ini tidak dibaca selama proses penyesuaian nada dokumen cerdas.
response, err := bucket.Do("POST", "example.docx", params, nil, strings.NewReader(data), nil)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
defer response.Body.Close()
jsonData, err := io.ReadAll(response.Body)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
var text TextData
err = json.Unmarshal(jsonData, &text)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Printf("RequestId:%v\n", text.RequestId)
fmt.Printf("Text:%v\n", text.Output.Text)
fmt.Printf("FinishReason:%v\n", text.Output.FinishReason)
}