ChattyChan – Unity 中使用 OpenAI FunctionCall 小例

发布于 2023-10-22  119 次阅读


UnityChattyChan

syan2018/UnityChattyChan: An example of driving character dialogue and expressions through the function call feature of the OpenAI ChatGPT API, invoked via Unity (github.com)

写了一个玩具仓库,提供一个使用Function Call功能稳定驱动Chatbot动画表现的样例

难得想参加一次GameJam,喜提三阳,做了一点通用脚手架就卒了(悲

image

An example of driving character dialogue and expressions through the function call feature of the OpenAI ChatGPT API, invoked via Unity

尝试在 Unity 中使用 OpenAI API 的 function call 功能,提供一个驱动 ChatBot 对话和展示表情的简单实例。是款 GameJam 去世作品中的模块。

原始请求实现参考 zhangliwei7758/unity-AI-Chat-Toolkit: 使用unity实现AI聊天相关功能 (github.com)

主要在其 ChatGPT 模块基础上追加开发 function call 相关功能

实现速览

定义了部分结构体用于创建和回调 GPTFunction

一个创建显示对话和表情的 GPTFunction 样例如下(详情见完整工程)

private void InitSpeechAndExpressionFunc()
{
    // 定义参数
    var expressionParameters = new GPTFunctionParameters
    {
        type = "object",
        properties = new Dictionary<string, GPTFunctionParameterProperties>
        {
            {
                // 定义对话内容
                "speech", new GPTFunctionParameterProperties
                {
                    type = "string",
                    description = "Output the dialogue content to this parameter"
                }
            },
            {
                // 定义参数表情
                "expression", new GPTFunctionParameterProperties
                {
                    type = "string",
                    description = "Choose the expression to use, default to Idle",
                    Enum = Expressions
                }
            },
        },
        required = new List<string> { "speech" }
    };

    // 定义Function
    var expressionFunction = new GPTFunction(
        _name: "talk_with_expression",
        _description: "When not invoking other Func, please use this Func to create dialogues with expressions",
        _parameters: expressionParameters,
        _callback: SpeechAndExpressionCallback
    );

    Functions[FuncTypes.Normal].Add(expressionFunction);
}

表情差分效果展示

image

(虽然ChattyChan并不是猫娘)

image

(有光环,伊织代了,嘿嘿)


百无一用是书生