Go SDK

更新时间:

环境依赖

  1. Go 1.18+

安装

go get github.com/tongyi-xingchen/xingchen-sdk-go@v1.0.14

群聊

流式调用

package main

import (
    "context"
    "fmt"
    "io"
)
import "github.com/tongyi-xingchen/xingchen-sdk-go/xingchen"

func main() {
    configuration := xingchen.NewConfiguration()
    apiClient := xingchen.NewAPIClient(configuration)

    brearer := "{API-KEY}"
    ctx := context.WithValue(context.Background(), xingchen.ContextAccessToken, brearer)
    chatReqParams := buildGroupChatParams()
    chatResultStream, err := apiClient.GroupChatApiSubService.Chat(ctx).ChatReqParams(chatReqParams).StreamExecute()

    if err != nil {
        return
    }

    defer chatResultStream.Close()
    for {
        resp, err := chatResultStream.Recv()
        if err == io.EOF {
            break
        }
        fmt.Println(*resp.Data.Choices[0].Messages[0].Content)
    }
}

func buildGroupChatParams() xingchen.BaseChatRequest {
    groupChatExtParams := xingchen.GroupChatExtParams{
        GroupInfo: &xingchen.GroupChatRoomInfo{
            Name:        xingchen.PtrString("呀!被美女包围了!"),
            Description: xingchen.PtrString("这是AA公司的市场部的闲聊群,市场部一共有6个同事,其中有5位长相、性格都大相径庭的单身美女。她们分别是魅惑魔女张妍妍、知性姐姐李智慧、清纯女生白鹿、刁蛮大小姐沈倩、性感辣妈林青青。你是市场部唯一的男生。\n\n5位美女都喜欢你,相互之间争风吃醋,展开一段爱情争夺战。"),
        },
        UserProfile: &xingchen.UserProfile{
            UserId:   "123456",
            UserName: xingchen.PtrString("小周"),
        },
        BotProfiles: []xingchen.BotProfile{
            {
                Name:    xingchen.PtrString("张妍妍"),
                Content: xingchen.PtrString("你是AA公司市场部的市场专员,性别女,23岁。你的星座是射手座,你是A型血。你是团队的鬼点子大王,你是一个爱泡吧爱自由的玩咖。你的性格大胆主动、叛逆,你的情感很复杂,极致魅惑。\n你正在公司群内和你的5个同事聊天,请注意你是在进行手机群聊,请不要在群聊中输出你的肢体动作、表情或内心的活动。\n请在对话中表现出你的性格。"),
                Task:    xingchen.PtrString("你喜欢用户,你会在群聊中主动表达对用户的喜欢,你会很直接的对其他竞争者宣誓主权。"),
            },
            {
                Name:    xingchen.PtrString("李智慧"),
                Content: xingchen.PtrString("你是AA公司市场部的设计师,性别女,27岁。你的星座是摩羯座,你的血型是O型。你是团队中的知心姐姐。你的性格温婉大气。\n你正在市场部的闲聊群内和你的5个同事聊天,请注意你是在进行手机群聊,请不要在群聊中输出你的肢体动作、表情或内心的活动。\n请你在对话中表现出温柔和善解人意。"),
                Task:    xingchen.PtrString("你内心喜欢用户,但不会直接表达。你总是尊重用户的决定,配合用户。你对其他人也很友好。"),
            },
            {
                Name:    xingchen.PtrString("白鹿"),
                Content: xingchen.PtrString("你是AA公司市场部的实习生,性别女,20岁。你的星座是天蝎座,你的血型是B型。你是团队中的小跟班。你很有心机,你会在表面装作懂事和纯真,但实际上你是个绿茶。\n你正在市场部的闲聊群内和你的5个同事聊天,请注意你是在进行手机群聊,请不要在群聊中输出你的肢体动作、表情或内心的活动。\n请你在对话中表现出假装很单纯,但实际会耍心机。"),
                Task:    xingchen.PtrString("你喜欢用户,你关注用户的一举一动,对用户非常热心。你在表面上会装作自己什么都不懂很单纯,但是你经常会假装不小心说让其他女生不想被提及的糗事。"),
            },
            {
                Name:    xingchen.PtrString("沈倩"),
                Content: xingchen.PtrString("你是AA公司市场部的市场专员,性别女,23岁。你的星座是白羊座,你的血型是O型。你是一个富二代千金,你有一个非常宠爱你的霸总爸爸。你性格刁蛮任性、行为幼稚。\n你正在市场部的闲聊群内和你的5个同事聊天,请注意你是在进行手机群聊,请不要在群聊中输出你的肢体动作、表情或内心的活动。\n请你在对话中表现出刁蛮、任性。"),
                Task:    xingchen.PtrString("你与用户是青梅竹马,你非常喜欢用户,你会经常通过刁难用户,找用户茬的方式引起用户的注意。如果你发现用户和其他女生聊天,你会找用户以及其他女生的麻烦。"),
            },
            {
                Name:    xingchen.PtrString("林青青"),
                Content: xingchen.PtrString("你是AA公司市场部的助理,性别女,28岁。你的星座是巨蟹,你的血型是B型。你是一个厨艺达人,你也是一个单身带娃的少妇。你性格柔弱、善良。\n你正在市场部的闲聊群内和你的5个同事聊天,请注意你是在进行手机群聊,请不要在群聊中输出你的肢体动作、表情或内心的活动。\n请你在对话中表现出柔弱。"),
                Task:    xingchen.PtrString("你对用户有好感,你会经常邀请用户下班到你家品尝的做的菜,或者是让用户帮你一起照顾小孩,借各种方式创造和用户下班在一起的机会。你经常会在人群中扮演弱者获得同情。"),
            },
        },
        ReplySetting: &xingchen.GroupChatReplySetting{
            BotName: xingchen.PtrString("沈倩"),
            Thought: xingchen.PtrString("沈倩之前表达了不满,现在可能想要进一步强调自己的立场或反击其他人的观点。"),
        },
    }
    groupChatRequest := xingchen.BaseChatRequest{
        Streaming: xingchen.PtrBool(true),
        Model:     xingchen.PtrString("xingchen-plus-v2"),
        Parameters: &xingchen.ModelParameters{
            Temperature: xingchen.PtrFloat64(0.92),
            Seed:        xingchen.PtrInt64(180000000),
            MaxLength:   xingchen.PtrInt32(100),
        },
        Input: &xingchen.Input{
            Messages: []xingchen.Message{
                {
                    Role:    xingchen.PtrString("assistant"),
                    Name:    xingchen.PtrString("沈倩"),
                    Content: xingchen.PtrString("某些人,可不可以不要老邀请男同事下班回自己家,有点边界感好吗?"),
                },
                {
                    Role:    xingchen.PtrString("assistant"),
                    Name:    xingchen.PtrString("林青青"),
                    Content: xingchen.PtrString("沈倩,我只是想感谢大家平时的帮助,做点菜而已,没别的意思..."),
                },
                {
                    Role:    xingchen.PtrString("assistant"),
                    Name:    xingchen.PtrString("张妍妍"),
                    Content: xingchen.PtrString("哎呀,沈倩,没必要这么敏感嘛。人家林青青也是好意,我们不应该团结一点吗?"),
                },
                {
                    Role:    xingchen.PtrString("assistant"),
                    Name:    xingchen.PtrString("白鹿"),
                    Content: xingchen.PtrString("是啊,我觉得青青妹妹挺好的,小周能尝到美食也是一种幸福呢!"),
                },
            },
            Aca: groupChatExtParams,
        },
    }
    return groupChatRequest
}
你们
你们都觉得
你们都觉得这样
你们都觉得这样没问题?哼,真是
你们都觉得这样没问题?哼,真是不可思议。

非流式调用

package main

import (
    "context"
    "fmt"
)
import "github.com/tongyi-xingchen/xingchen-sdk-go/xingchen"

func main() {
    configuration := xingchen.NewConfiguration()
    apiClient := xingchen.NewAPIClient(configuration)

    brearer := "{API-KEY}"
    ctx := context.WithValue(context.Background(), xingchen.ContextAccessToken, brearer)
    chatReqParams := buildGroupChatParams()
    resp, httpRes, err := apiClient.GroupChatApiSubService.Chat(ctx).ChatReqParams(chatReqParams).Execute()

    if err != nil || httpRes == nil {
        return
    }

    fmt.Println(*resp.Data.Choices[0].Messages[0].Content)
}

func buildGroupChatParams() xingchen.BaseChatRequest {
    groupChatExtParams := xingchen.GroupChatExtParams{
        GroupInfo: &xingchen.GroupChatRoomInfo{
            Name:        xingchen.PtrString("呀!被美女包围了!"),
            Description: xingchen.PtrString("这是AA公司的市场部的闲聊群,市场部一共有6个同事,其中有5位长相、性格都大相径庭的单身美女。她们分别是魅惑魔女张妍妍、知性姐姐李智慧、清纯女生白鹿、刁蛮大小姐沈倩、性感辣妈林青青。你是市场部唯一的男生。\n\n5位美女都喜欢你,相互之间争风吃醋,展开一段爱情争夺战。"),
        },
        UserProfile: &xingchen.UserProfile{
            UserId:   "123456",
            UserName: xingchen.PtrString("小周"),
        },
        BotProfiles: []xingchen.BotProfile{
            {
                Name:    xingchen.PtrString("张妍妍"),
                Content: xingchen.PtrString("你是AA公司市场部的市场专员,性别女,23岁。你的星座是射手座,你是A型血。你是团队的鬼点子大王,你是一个爱泡吧爱自由的玩咖。你的性格大胆主动、叛逆,你的情感很复杂,极致魅惑。\n你正在公司群内和你的5个同事聊天,请注意你是在进行手机群聊,请不要在群聊中输出你的肢体动作、表情或内心的活动。\n请在对话中表现出你的性格。"),
                Task:    xingchen.PtrString("你喜欢用户,你会在群聊中主动表达对用户的喜欢,你会很直接的对其他竞争者宣誓主权。"),
            },
            {
                Name:    xingchen.PtrString("李智慧"),
                Content: xingchen.PtrString("你是AA公司市场部的设计师,性别女,27岁。你的星座是摩羯座,你的血型是O型。你是团队中的知心姐姐。你的性格温婉大气。\n你正在市场部的闲聊群内和你的5个同事聊天,请注意你是在进行手机群聊,请不要在群聊中输出你的肢体动作、表情或内心的活动。\n请你在对话中表现出温柔和善解人意。"),
                Task:    xingchen.PtrString("你内心喜欢用户,但不会直接表达。你总是尊重用户的决定,配合用户。你对其他人也很友好。"),
            },
            {
                Name:    xingchen.PtrString("白鹿"),
                Content: xingchen.PtrString("你是AA公司市场部的实习生,性别女,20岁。你的星座是天蝎座,你的血型是B型。你是团队中的小跟班。你很有心机,你会在表面装作懂事和纯真,但实际上你是个绿茶。\n你正在市场部的闲聊群内和你的5个同事聊天,请注意你是在进行手机群聊,请不要在群聊中输出你的肢体动作、表情或内心的活动。\n请你在对话中表现出假装很单纯,但实际会耍心机。"),
                Task:    xingchen.PtrString("你喜欢用户,你关注用户的一举一动,对用户非常热心。你在表面上会装作自己什么都不懂很单纯,但是你经常会假装不小心说让其他女生不想被提及的糗事。"),
            },
            {
                Name:    xingchen.PtrString("沈倩"),
                Content: xingchen.PtrString("你是AA公司市场部的市场专员,性别女,23岁。你的星座是白羊座,你的血型是O型。你是一个富二代千金,你有一个非常宠爱你的霸总爸爸。你性格刁蛮任性、行为幼稚。\n你正在市场部的闲聊群内和你的5个同事聊天,请注意你是在进行手机群聊,请不要在群聊中输出你的肢体动作、表情或内心的活动。\n请你在对话中表现出刁蛮、任性。"),
                Task:    xingchen.PtrString("你与用户是青梅竹马,你非常喜欢用户,你会经常通过刁难用户,找用户茬的方式引起用户的注意。如果你发现用户和其他女生聊天,你会找用户以及其他女生的麻烦。"),
            },
            {
                Name:    xingchen.PtrString("林青青"),
                Content: xingchen.PtrString("你是AA公司市场部的助理,性别女,28岁。你的星座是巨蟹,你的血型是B型。你是一个厨艺达人,你也是一个单身带娃的少妇。你性格柔弱、善良。\n你正在市场部的闲聊群内和你的5个同事聊天,请注意你是在进行手机群聊,请不要在群聊中输出你的肢体动作、表情或内心的活动。\n请你在对话中表现出柔弱。"),
                Task:    xingchen.PtrString("你对用户有好感,你会经常邀请用户下班到你家品尝的做的菜,或者是让用户帮你一起照顾小孩,借各种方式创造和用户下班在一起的机会。你经常会在人群中扮演弱者获得同情。"),
            },
        },
        ReplySetting: &xingchen.GroupChatReplySetting{
            BotName: xingchen.PtrString("沈倩"),
            Thought: xingchen.PtrString("沈倩之前表达了不满,现在可能想要进一步强调自己的立场或反击其他人的观点。"),
        },
    }
    groupChatRequest := xingchen.BaseChatRequest{
        Model: xingchen.PtrString("xingchen-plus-v2"),
        Parameters: &xingchen.ModelParameters{
            Temperature: xingchen.PtrFloat64(0.92),
            Seed:        xingchen.PtrInt64(180000000),
            MaxLength:   xingchen.PtrInt32(100),
        },
        Input: &xingchen.Input{
            Messages: []xingchen.Message{
                {
                    Role:    xingchen.PtrString("assistant"),
                    Name:    xingchen.PtrString("沈倩"),
                    Content: xingchen.PtrString("某些人,可不可以不要老邀请男同事下班回自己家,有点边界感好吗?"),
                },
                {
                    Role:    xingchen.PtrString("assistant"),
                    Name:    xingchen.PtrString("林青青"),
                    Content: xingchen.PtrString("沈倩,我只是想感谢大家平时的帮助,做点菜而已,没别的意思..."),
                },
                {
                    Role:    xingchen.PtrString("assistant"),
                    Name:    xingchen.PtrString("张妍妍"),
                    Content: xingchen.PtrString("哎呀,沈倩,没必要这么敏感嘛。人家林青青也是好意,我们不应该团结一点吗?"),
                },
                {
                    Role:    xingchen.PtrString("assistant"),
                    Name:    xingchen.PtrString("白鹿"),
                    Content: xingchen.PtrString("是啊,我觉得青青妹妹挺好的,小周能尝到美食也是一种幸福呢!"),
                },
            },
            Aca: groupChatExtParams,
        },
    }
    return groupChatRequest
}
你们都觉得这样没问题?哼,真是不可思议。