[经验分享]gpt-3.5-Turbo|unity中实现http接口调用gpt新接口以及信息处理的实现案例分享

这篇具有很好参考价值的文章主要介绍了[经验分享]gpt-3.5-Turbo|unity中实现http接口调用gpt新接口以及信息处理的实现案例分享。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

gpt-3.5-turbo模型接入教程,unity,chatgpt,gpt-3.5-turbo,unity,Powered by 金山文档

最近openAI发布了目前chatGPT所使用的模型gpt-3.5-Turbo,之前使用了text-davinci-003模型做了一个galgame的AI女友对话的demo。这次趁着新接口的发布,对这个demo也同步更新了模型调用的代码。本篇文章将分享一下,如何在unity里使用UnityWebRequest实现与openAI的接口调用以及信息处理的示例,希望能够帮助到有需要的朋友。

一、gpt-3.5-Turbo官方示例分析


①首先我们需要知道turbo接口api的调用地址,从官方文档中查询,找到了调用连接,如下:

api调用地址:https://api.openai.com/v1/chat/completions

②调用api所需要发送的报文

1)Header:

①ContentType:application/json

②Authorization:Bearer 你的apikey

2)发送的报文主体

从openAI官方网站查询了一下Turbo的调用示例,官方展示了一个Python的代码示例:

# Note: you need to be using OpenAI Python v0.27.0 for the code below to work
import openai
 
openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
        {"role": "user", "content": "Where was it played?"}
    ]
)

从官方示例可以发现,我们需要发送的报文,应该包含model的名称以及需要发送的messages,实际上从官方文档里看,可以发送的字段会更多,需要的话请大家自行查询吧。

我们可以发现,发送的报文里,包含有role角色定义,以及角色所发送的消息。

这里我们注意一下,role的可选值,必须是

口 system:在初始化的时候,设置AI的角色设定,可以理解为是人设。

口 user:我们发送的信息,放在这里

口 assistant:模型返回的信息,放在这里

需要注意的是,观察官方示例,可以发现,所有发送的信息以及反馈信息均被放置在报文里,这样可以让模型回答的时候,关联前文。

3)返回的报文

模型返回的报文格式如下所示,返回的信息以Json格式反馈。

{
    "id": "chatcmpl-6pWU3qzNuTBLU7U0tUw6Nqa0oQhWbHF",
    "object": "chat.completion",
    "created": 1677737615,
    "model": "gpt-3.5-turbo-0301",
    "usage": {
        "prompt_tokens": 39,
        "completion_tokens": 35,
        "total_tokens": 74
    },
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "你好,我是AI助手!"
            },
            "finish_reason": "stop",
            "index": 0
        }
    ]
}

二、unity发送的报文格式


因为我们需要使用unity来访问api,所以需要修改一下报文主体。这里我们将需要发送的报文写成Json格式:

{
    "model":"gpt-3.5-turbo",
    "messages":[
        {"role": "system", "content": "你是一个经验丰富的AI助手,能帮我处理很多计算机事务"},
        {"role": "user", "content": "你好"},
        {"role": "assistant", "content": "你好,我是一个语言模型AI"}
    ]
}

三、Unity中调用api的代码示例

本节内容将介绍一下如何使用UnityWebRequest实现调用gpt-3.5-Turbo的代码实现。

1)首先定义一下数据发送的类,用作保存待发送的报文信息。

  [Serializable]public class PostData
    {
        public string model;
        public List<SendData> messages;
    }

    [Serializable]
    public class SendData
    {
        public string role;
        public string content;
        public SendData() { }
        public SendData(string _role,string _content) {
            role = _role;
            content = _content;
        }
    }

2)定义一下返回数据的类,用于保存模型返回的数据信息

 [Serializable]
    public class MessageBack
    {
        public string id;
        public string created;
        public string model;
        public List<MessageBody> choices;
    }
    [Serializable]
    public class MessageBody
    {
        public Message message;
        public string finish_reason;
        public string index;
    }
    [Serializable]
    public class Message
    {
        public string role;
        public string content;
    }

3)unity使用UnityWebRequest调用api的代码示例

调用api的功能写成一个方法,输入的参数包含待发送的文本、openAI的密钥以及回调函数,方法里需要用的一些变量,我放在脚本里做了定义。

以下是完整的代码示例:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class GptTurboScript : MonoBehaviour
{
    /// <summary>
    /// api地址
    /// </summary>
    public string m_ApiUrl = "https://api.openai.com/v1/chat/completions";
    /// <summary>
    /// gpt-3.5-turbo
    /// </summary>
    public string m_gptModel = "gpt-3.5-turbo";
    /// <summary>
    /// 缓存对话
    /// </summary>
    [SerializeField]public List<SendData> m_DataList = new List<SendData>();
    /// <summary>
    /// AI人设
    /// </summary>
    public string Prompt;

    private void Start()
    {
        //运行时,添加人设
        m_DataList.Add(new SendData("system", Prompt));
    }
    /// <summary>
    /// 调用接口
    /// </summary>
    /// <param name="_postWord"></param>
    /// <param name="_openAI_Key"></param>
    /// <param name="_callback"></param>
    /// <returns></returns>
    public IEnumerator GetPostData(string _postWord,string _openAI_Key, System.Action<string> _callback)
    {
        //缓存发送的信息列表
        m_DataList.Add(new SendData("user", _postWord));

        using (UnityWebRequest request = new UnityWebRequest(m_ApiUrl, "POST"))
        {
            PostData _postData = new PostData
            {
                model = m_gptModel,
                messages = m_DataList
            };

            string _jsonText = JsonUtility.ToJson(_postData);
            byte[] data = System.Text.Encoding.UTF8.GetBytes(_jsonText);
            request.uploadHandler = (UploadHandler)new UploadHandlerRaw(data);
            request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();

            request.SetRequestHeader("Content-Type", "application/json");
            request.SetRequestHeader("Authorization", string.Format("Bearer {0}", _openAI_Key));

            yield return request.SendWebRequest();

            if (request.responseCode == 200)
            {
                string _msg = request.downloadHandler.text;
                MessageBack _textback = JsonUtility.FromJson<MessageBack>(_msg);
                if (_textback != null && _textback.choices.Count > 0)
                {

                    string _backMsg = _textback.choices[0].message.content;
                    //添加记录
                    m_DataList.Add(new SendData("assistant", _backMsg));
                    _callback(_backMsg);
                }

            }
        }
    }

    #region 数据包

    [Serializable]public class PostData
    {
        public string model;
        public List<SendData> messages;
    }

    [Serializable]
    public class SendData
    {
        public string role;
        public string content;
        public SendData() { }
        public SendData(string _role,string _content) {
            role = _role;
            content = _content;
        }

    }
    [Serializable]
    public class MessageBack
    {
        public string id;
        public string created;
        public string model;
        public List<MessageBody> choices;
    }
    [Serializable]
    public class MessageBody
    {
        public Message message;
        public string finish_reason;
        public string index;
    }
    [Serializable]
    public class Message
    {
        public string role;
        public string content;
    }

    #endregion
}

本文的代码示例是基于我前段时间做的一个使用chatGPT实现的二次元AI女友galgame的demo提取的,源码包提供了text-davinci-003以及gpt-3.5-Turbo两个模型的demo示例,源码已经发布在Gitee上,需要使用的朋友,可以自行下载参考。

Gitee地址:chatGPTAIGirlFrienchatGPTAIGirlFriendSample: 使用chatGPT+unity+Azure+VRoid制作的简单的AI女友(老婆)对话机器人的demo。文章来源地址https://www.toymoban.com/news/detail-792452.html

到了这里,关于[经验分享]gpt-3.5-Turbo|unity中实现http接口调用gpt新接口以及信息处理的实现案例分享的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Azure Machine Learning - Azure OpenAI GPT 3.5 Turbo 微调教程

    本教程将引导你在Azure平台完成对 gpt-35-turbo-0613 模型的微调。 关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负

    2024年02月04日
    浏览(46)
  • LLMs:OpenAI官方重磅更新——新增GPT-3.5Turbo调和API更新功能

    LLMs:OpenAI官方重磅更新——新增GPT-3.5Turbo调和API更新功能 导读 :2023年8月22日,OpenAI官方发布,开发者现在可以 使用自己的数据 来 定制 适用于其用例的 GPT-3.5 Turbo模型 。GPT-3.5 Turbo的微调现在已经可用,GPT-4的微调将在今年秋季推出。此更新使开发者 能够定制模型 ,以便为

    2024年02月10日
    浏览(33)
  • OpenAI推出GPT-3.5Turbo微调功能并更新API;Midjourney更新局部绘制功能

    🦉 AI新闻 🚀 OpenAI推出GPT-3.5Turbo微调功能并更新API,将提供GPT-4微调功能 摘要 :OpenAI宣布推出GPT-3.5Turbo微调功能,并更新API,使企业和开发者能够定制ChatGPT,达到或超过GPT-4的能力。通过微调,用户可以让模型更好地遵循指令、一致格式化响应,并适应特定品牌需求。此外

    2024年02月11日
    浏览(32)
  • 更智能、更强大:OpenAI发布升级版gpt-3.5-turbo-0613/16k速度提升,长度飙升4倍

    OpenAI开发者平台最近推出了两个引人注目的GPT升级版本:gpt-3.5-turbo-0613和gpt-3.5-turbo-16k。这些新版本带来了一系列令人兴奋的功能和增强,为开发者提供了更加灵活和强大的自然语言处理工具。本文将为您介绍这两个版本的主要特点和优势。 gpt-3.5-turbo-0613和gpt-3.5-turbo-16k的推

    2024年02月09日
    浏览(43)
  • 在unity中实现OpenCvForUnity的调用

    首先下载openCvForUnity的插件,链接如下: 链接:https://pan.baidu.com/s/1W-udrU2vEKxLXf5IwVI6qw 提取码:6666 –来自百度网盘超级会员V4的分享 打开unity项目,直接将文件拖入Asset文件中 确定导入所有的包,此时可能会发生错误(报错OpenCvForUnity.CoreModule.Range和System.Range之间引用不明确)

    2024年02月11日
    浏览(23)
  • 重磅!openAI开放chatGPT模型APIgpt-3.5-turbo,成本直降90%!

    ChatGPT API,千呼万唤终于来了。 chatGPT不仅开放 成本还直降90%! 全新API基于“gpt-3.5-turbo”模型,其基础是支持ChatGPT的GPT 3.5模型,取代了此前的“text-davinci-003.”。这款名为“gpt-3.5-turbo”的模型,定价为 0.002美元/每1000 tokens 。这“比我们现有的GPT-3.5模型便宜 10 倍”,部分原

    2023年04月09日
    浏览(28)
  • 实现自动化获取1688商品详情数据接口经验分享

    获取电商平台商品详情数据,主要用过的是爬虫技术,过程比较曲折,最终结果是好的。我将代码都封装在1688.item_get接口中,直接调用此接口可以一步抓取。 1688商品详情页展示 传入商品ID调用item_get获取数据 响应示例  

    2024年02月07日
    浏览(31)
  • 使用Unity开发手机AR项目经验分享

           AR技术发展到现在也不新鲜了,开发AR的SDK也是五花八门,怎么选择是个问题。这篇文章提供了一套整体开发AR思路,还有后续兼容性问题的解决思路。         Unity开发手机AR项目主要是集成的ARCore和ARKit,ARCore面向Android手机而ARKit面向IOS,从Unity2019后Unity官方使用

    2024年02月11日
    浏览(35)
  • 猫头虎分享:Springboot项目中实现IP白名单限制访问接口的深度探讨

    博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接 : 🔗 精选专栏 : 《面试题大全》 — 面试准备的宝典! 《IDEA开发秘籍》 — 提升你的IDEA技能! 《100天精通鸿蒙》 — 从Web/安卓到鸿蒙大师! 《100天精通Golang(基础入门篇)》 — 踏入

    2024年02月22日
    浏览(45)
  • [最新]Java SpringBoot请求调用OpenAI(ChatGPT3/3.5/4)相关接口核心方法(附100个OpenAI/ChatGPT key)

    前言 当下,OpenAI 存在着许多令人惊叹的技术,如 ChatGPT3/3.5/4,它们能够生成高质量的文章、翻译语言、自动生成代码,并且在许多领域都取得了广泛的应用。本文将向您介绍如何使用 Java HttpClient 调用 OpenAI 的 ChatGPT3/3.5/4 接口(如果需要支持Spring,并提供了 100 个 OpenAI/Chat

    2023年04月11日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包