Unity接入大语言模型LLM(新手版,适用任何其他语言类如pyhon)

本文介绍了如何在Unity中通过GPT访问大语言模型API,包括设置请求体、进行Postman测试以及处理输入和输出文本。作者还分享了如何使用GPT生成符合指定格式的Unity函数代码,以及关于LLM的使用技巧和注意事项。
摘要由CSDN通过智能技术生成

点击查看之前blog

我之前发过一个blog,是关于unity怎么接入大语言模型的,主要是根据b站的一个up发布的视频来自己改写的。后来经过一系列的代码学习和GPT的使用,发现这种简单的功能用GPT很容易的实现。

目前我这篇文章就主要提一些思路,以及GPT如何帮助我们写代码,实现目标功能。

1.LLM访问讲解.

首先我们需要知道的是LLM的一个使用流程就是

也就是说我们要在任何一个平台或者系统中集成LLM,就只需要有这个我们要访问的大语言模型LLM的api接口,就可以实现访问大语言模型了。至于输入输出的文本在这过程中的变化,才是大家初学者烦恼的。

其实大家可以理解为LLM的api他只能识别一封申请书,你这封申请书不按格式写,他就会拒收,而且LLM它回复你的格式也是一个回复函,它也一定按它的格式写。而申请书和回复函的格式一般再LLM的官方文档里有,这里默认大家已经获得了一个API接口了,大家不知道在哪看官方文档,那么其实可以在接口http://*.**.***.**/8001这种后面加一个/docs来查看这个接口的说明。在POST这一栏下面明确的说明了两个信息:第一是接口http://*.**.***.**/8001后面加上/v1/chat/completions就可以进行LLM的访问了,第二就是这封申请书的格式是黑色部分所展示的。

然后我们就能开始进行我们的测试了:

Postman的api访问测试,操作步骤如图所示,关键设置这里给新手提一下,在该界面下,输入API,然后点击Body,再点击raw,格式选json,然后把申请书格式直接粘贴复制在下面框内。这里关于申请书(正式名称叫请求体),里面我们需要对信息进行填写,毕竟你光有格式不行,还得需要填写嘛,模型名称需要填写,这个根据你的LLM实际情况来填。然后就是就是content的内容了,这里的内容就是我们之前说的输入文本。最后把申请书填好这两个后点击send,就可以的到回复函了(响应体)。

2.输入文本和输出文本的处理

这一步也是最关键的一步吧,这里我就给大家分享一个简单的经验,关于使用GPT帮我们完成这一步。首先大家再看图理解一下文本处理的过程,这个过程我们直接用语言描述给GPT,就可以让GPT帮我们实现这个功能,也就是实现了访问GPT。

你可以参考我设计的问题来问GPT,让GPT帮你写代码:

你是Untiy的专家,请帮我写一个能在Unity中运行的函数,该函数的输入是:文本text1,输出是:文本text2。该函数的功能是访问api:###(这里填写你的LLM的接口),请求体是

{
  "model": "####",
  "messages": [
    {
      "role": "user",
      "content": "text1",
      "metadata": "string",
      "tools": [
        {}
      ]
    }
  ],
  "temperature": 0.7,
  "top_p": 1,
  "max_tokens": 0,
  "stop": "string",
  "stream": false,
  "stop_token_ids": [
    0
  ],
  "repetition_penalty": 1.1,
  "return_function_call": false
}

函数输入的text1的内容用于替换"content": "text1"中的text1。

响应体是:

{
    "model": "###",
    "object": "chat.completion",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "text2",
                "metadata": null,
                "tools": null
            },
            "finish_reason": "stop",
            "history": null
        }
    ],
    "created": 1710316555,
    "usage": {
        "prompt_tokens": 8,
        "total_tokens": 36,
        "completion_tokens": 28
    }
}

函数的输出:text2的内容来自于其中的"content": "text2",需要注意的是响应体和请求体都是json格式。

利用以上的prompt,基本GPT就能写出一个很好的脚本了。具体可能的意外情况或许都可以将问题粘贴到GPT中再次提问让他解决。最后就实现了在Unity中访问LLM。关于这个输入文本该怎么来,输入的文本该怎么使用,这些都可以让GPT帮我们实现,但是大家最好一步一步来,如果你直接问gpt:你帮我写一个脚本,通过读取输入框内的文本来访问API,最后在UI中出现的回答,这种复杂的代码逻辑可能GPT会出错,GPT3.5更加智障。

3.个人经验小Tip分享

给看到这里的新手分享一些关于LLM的小知识,

GPT的官方文档也提供了外部访问它的模型,但他一般就只提供了key,可能Api都不用,直接访问,但是现在不知道有没有发布unity的相关demo。但是GPT的key是有访问额度的,超出部分需要额外付费,而且不管任何LLM,key都需要付费。只有自己部署在本地才是免费的,比如chatglm。

之前教程都是单轮对话,多轮对话其实同理,在"messages":中其实大家看到了,他其实是一个可包含多对象的数组,里面可以插入多个花括号{},也就是多条文本信息,而LLM通过识别role的内容就能区分上下文文本中哪些对话使它说的。而关于一些LLM的教程视频里面老讲到的prompt,其实就是在中括号[]里面的第一个加一个role为“system”的角色,然后在后面加上prompt。这样保证接下来的所有对话内容都是基于这个prompt中进行的。举个例子的话就是下图所示,而且这个多轮对话可以保存历史聊天记录。


  "messages": [
    {
      "role": "user",
      "content": "你好",
      "metadata": "greeting",
      "tools": []
    },
    {
      "role": "assistant",
      "content": "你好!有什么可以帮助你的吗?",
      "metadata": "response to greeting",
      "tools": []
    },
    {
      "role": "user",
      "content": "我想了解更多关于电池的信息。",
      "metadata": "query",
      "tools": []
    },
    {
      "role": "assistant",
      "content": "当然可以。锂离子电池是目前广泛应用于电子设备的一种电池类型,它有着高能量密度、小体积和长寿命等优点。",
      "metadata": "response to query",
      "tools": []
    }
  ]

  • 47
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值