-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'feat/ark/moderation_hit_type' into 'integration_2025-01…
…-09_669760003330' feat: [development task] ark-runtime-manual-Golang (965061) See merge request iaasng/volcengine-go-sdk!447
- Loading branch information
Showing
6 changed files
with
312 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
package arkruntime | ||
|
||
import ( | ||
"context" | ||
"fmt" | ||
"net/http" | ||
"net/url" | ||
"strconv" | ||
|
||
"github.com/volcengine/volcengine-go-sdk/service/arkruntime/model" | ||
) | ||
|
||
const contentGenerationTaskPath = "/contents/generations/tasks" | ||
|
||
func (c *Client) CreateContentGenerationTask( | ||
ctx context.Context, | ||
request model.CreateContentGenerationTaskRequest, | ||
setters ...requestOption, | ||
) (response model.CreateContentGenerationTaskResponse, err error) { | ||
if !c.isAPIKeyAuthentication() { | ||
return response, model.ErrAKSKNotSupported | ||
} | ||
|
||
requestOptions := append(setters, withBody(request)) | ||
err = c.Do(ctx, http.MethodPost, c.fullURL(contentGenerationTaskPath), resourceTypeEndpoint, request.Model, &response, requestOptions...) | ||
return | ||
} | ||
|
||
func (c *Client) GetContentGenerationTask( | ||
ctx context.Context, | ||
request model.GetContentGenerationTaskRequest, | ||
setters ...requestOption, | ||
) (response model.GetContentGenerationTaskResponse, err error) { | ||
if !c.isAPIKeyAuthentication() { | ||
return response, model.ErrAKSKNotSupported | ||
} | ||
|
||
url := fmt.Sprintf("%s/%s", c.fullURL(contentGenerationTaskPath), request.ID) | ||
|
||
err = c.Do(ctx, http.MethodGet, url, resourceTypeEndpoint, "", &response, setters...) | ||
return | ||
} | ||
|
||
func (c *Client) DeleteContentGenerationTask( | ||
ctx context.Context, | ||
request model.DeleteContentGenerationTaskRequest, | ||
setters ...requestOption, | ||
) (err error) { | ||
if !c.isAPIKeyAuthentication() { | ||
return model.ErrAKSKNotSupported | ||
} | ||
|
||
url := fmt.Sprintf("%s/%s", c.fullURL(contentGenerationTaskPath), request.ID) | ||
|
||
err = c.Do(ctx, http.MethodDelete, url, resourceTypeEndpoint, "", nil, setters...) | ||
return err | ||
} | ||
|
||
func (c *Client) ListContentGenerationTasks( | ||
ctx context.Context, | ||
request model.ListContentGenerationTasksRequest, | ||
setters ...requestOption, | ||
) (response model.ListContentGenerationTasksResponse, err error) { | ||
if !c.isAPIKeyAuthentication() { | ||
return response, model.ErrAKSKNotSupported | ||
} | ||
|
||
values := url.Values{} | ||
if pageNum := request.PageNum; pageNum != nil && *pageNum > 0 { | ||
values.Add("page_num", strconv.Itoa(*pageNum)) | ||
} | ||
if pageSize := request.PageSize; pageSize != nil && *pageSize > 0 { | ||
values.Add("page_size", strconv.Itoa(*pageSize)) | ||
} | ||
|
||
if filter := request.Filter; filter != nil { | ||
if status := filter.Status; status != nil && *status != "" { | ||
values.Add("filter.status", *status) | ||
} | ||
if model := filter.Model; model != nil && *model != "" { | ||
values.Add("filter.model", *model) | ||
} | ||
for _, taskID := range filter.TaskIDs { | ||
values.Add("filter.task_ids", *taskID) | ||
} | ||
} | ||
|
||
endpoint := fmt.Sprintf("%s?%s", c.fullURL(contentGenerationTaskPath), values.Encode()) | ||
|
||
err = c.Do(ctx, http.MethodGet, endpoint, resourceTypeEndpoint, "", &response, setters...) | ||
if err != nil { | ||
return response, err | ||
} | ||
|
||
return response, nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
package main | ||
|
||
import ( | ||
"context" | ||
"fmt" | ||
"github.com/volcengine/volcengine-go-sdk/volcengine" | ||
"os" | ||
|
||
"github.com/volcengine/volcengine-go-sdk/service/arkruntime" | ||
"github.com/volcengine/volcengine-go-sdk/service/arkruntime/model" | ||
) | ||
|
||
/** | ||
* Authentication | ||
* 1.If you authorize your endpoint using an API key, you can set your api key to environment variable "ARK_API_KEY" | ||
* client := arkruntime.NewClientWithApiKey(os.Getenv("ARK_API_KEY")) | ||
* Note: If you use an API key, this API key will not be refreshed. | ||
* To prevent the API from expiring and failing after some time, choose an API key with no expiration date. | ||
*/ | ||
func main() { | ||
client := arkruntime.NewClientWithApiKey(os.Getenv("ARK_API_KEY")) | ||
ctx := context.Background() | ||
modelEp := "YOUR_ENDPOINT_ID" | ||
|
||
fmt.Println("----- create content generation task -----") | ||
createReq := model.CreateContentGenerationTaskRequest{ | ||
Model: modelEp, // Replace with your endpoint ID | ||
Content: []*model.CreateContentGenerationContentItem{ | ||
{ | ||
Type: model.ContentGenerationContentItemTypeText, | ||
Text: volcengine.String("龙与地下城女骑士背景是起伏的平原,目光从镜头转向平原 --ratio 1:1"), | ||
}, | ||
{ | ||
Type: model.ContentGenerationContentItemTypeImage, | ||
ImageURL: &model.ImageURL{ | ||
URL: "${YOUR URL HERE}", // Replace with URL | ||
}, | ||
}, | ||
}, | ||
} | ||
|
||
createResponse, err := client.CreateContentGenerationTask(ctx, createReq) | ||
if err != nil { | ||
fmt.Printf("create content generation error: %v\n", err) | ||
return | ||
} | ||
fmt.Printf("Task Created with ID: %s\n", createResponse.ID) | ||
|
||
fmt.Println("----- get content generation task -----") | ||
taskID := createResponse.ID | ||
|
||
getRequest := model.GetContentGenerationTaskRequest{ID: taskID} | ||
|
||
getResponse, err := client.GetContentGenerationTask(ctx, getRequest) | ||
if err != nil { | ||
fmt.Printf("get content generation task error: %v\n", err) | ||
return | ||
} | ||
|
||
fmt.Printf("Task ID: %s\n", getResponse.ID) | ||
fmt.Printf("Model: %s\n", getResponse.Model) | ||
fmt.Printf("Status: %s\n", getResponse.Status) | ||
fmt.Printf("Failure Reason: %v\n", getResponse.FailureReason) | ||
fmt.Printf("Video URL: %s\n", getResponse.Content.VideoURL) | ||
fmt.Printf("Completion Tokens: %d\n", getResponse.Usage.CompletionTokens) | ||
fmt.Printf("Created At: %d\n", getResponse.CreatedAt) | ||
fmt.Printf("Updated At: %d\n", getResponse.UpdatedAt) | ||
|
||
fmt.Println("----- list content generation task -----") | ||
|
||
listRequest := model.ListContentGenerationTasksRequest{ | ||
PageNum: volcengine.Int(1), | ||
PageSize: volcengine.Int(10), | ||
Filter: &model.ListContentGenerationTasksFilter{ | ||
Status: volcengine.String(model.StatusSucceeded), | ||
//TaskIDs: volcengine.StringSlice([]string{"cgt-example-1", "cgt-example-2"}), | ||
//Model: volcengine.String(modelEp), | ||
}, | ||
} | ||
|
||
listResponse, err := client.ListContentGenerationTasks(ctx, listRequest) | ||
if err != nil { | ||
fmt.Printf("failed to list content generation tasks: %v\n", err) | ||
} | ||
|
||
fmt.Printf("ListContentGenerationTasks returned %v results\n", listResponse.Total) | ||
|
||
fmt.Println("----- delete content generation task -----") | ||
|
||
deleteRequest := model.DeleteContentGenerationTaskRequest{ID: taskID} | ||
|
||
err = client.DeleteContentGenerationTask(ctx, deleteRequest) | ||
if err != nil { | ||
fmt.Printf("delete content generation task error: %v\n", err) | ||
} else { | ||
fmt.Println("successfully deleted task id: ", taskID) | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
package model | ||
|
||
type ContentGenerationContentItemType string | ||
|
||
const ( | ||
ContentGenerationContentItemTypeText ContentGenerationContentItemType = "text" | ||
ContentGenerationContentItemTypeImage ContentGenerationContentItemType = "image_url" | ||
) | ||
|
||
const ( | ||
StatusSucceeded = "succeeded" | ||
StatusCancelled = "cancelled" | ||
StatusFailed = "failed" | ||
StatusRunning = "running" | ||
StatusQueued = "queued" | ||
) | ||
|
||
type CreateContentGenerationTaskRequest struct { | ||
Model string `json:"model"` | ||
Content []*CreateContentGenerationContentItem `json:"content"` | ||
} | ||
|
||
type CreateContentGenerationTaskResponse struct { | ||
ID string `json:"id"` | ||
|
||
HttpHeader | ||
} | ||
|
||
type GetContentGenerationTaskRequest struct { | ||
ID string `json:"id"` | ||
} | ||
|
||
type GetContentGenerationTaskResponse struct { | ||
ID string `json:"id"` | ||
Model string `json:"model"` | ||
Status string `json:"status"` | ||
FailureReason *string `json:"failure_reason,omitempty"` | ||
Content Content `json:"content"` | ||
Usage Usage `json:"usage"` | ||
CreatedAt int64 `json:"created_at"` | ||
UpdatedAt int64 `json:"updated_at"` | ||
|
||
HttpHeader | ||
} | ||
|
||
type ListContentGenerationTasksRequest struct { | ||
PageNum *int `json:"page_num,omitempty"` | ||
PageSize *int `json:"page_size,omitempty"` | ||
Filter *ListContentGenerationTasksFilter `json:"filter,omitempty"` | ||
} | ||
|
||
type DeleteContentGenerationTaskRequest struct { | ||
ID string `json:"id"` | ||
} | ||
|
||
type ListContentGenerationTasksFilter struct { | ||
Status *string `json:"status,omitempty"` | ||
TaskIDs []*string `json:"task_ids,omitempty"` | ||
Model *string `json:"model,omitempty"` | ||
} | ||
|
||
type CreateContentGenerationContentItem struct { | ||
Type ContentGenerationContentItemType `json:"type"` | ||
Text *string `json:"text,omitempty"` | ||
ImageURL *ImageURL `json:"image_url,omitempty"` | ||
} | ||
|
||
type ImageURL struct { | ||
URL string `json:"url"` | ||
} | ||
type Content struct { | ||
VideoURL string `json:"video_url"` | ||
} | ||
|
||
type ContentGenerationUsage struct { | ||
CompletionTokens int `json:"completion_tokens"` | ||
} | ||
|
||
type ListContentGenerationTasksResponse struct { | ||
Total int64 `json:"total"` | ||
Items []ListContentGenerationTaskItem `json:"items"` | ||
HttpHeader | ||
} | ||
|
||
type ListContentGenerationTaskItem struct { | ||
ID string `json:"id"` | ||
Model string `json:"model"` | ||
Status string `json:"status"` | ||
FailureReason *string `json:"failure_reason,omitempty"` | ||
Content Content `json:"content"` | ||
Usage Usage `json:"usage"` | ||
CreatedAt int64 `json:"created_at"` | ||
UpdatedAt int64 `json:"updated_at"` | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters