Graph of Thoughts: Solving Elaborate Problems with Large Language Models

Tags: LLM

Authors: Ales Kubicek, Hubert Niewiadomski, Joanna Gajda, Lukas Gianinazzi, Maciej Besta, Michał Podstawski, Nils Blach, Piotr Nyczyk, Robert Gerstenberger, Tomasz Lehmann, Torsten Hoefler

Created Date: January 11, 2024 9:00 PM

Finished Date: 2024/01/18

Status: Finished

organization: Cledar, ETH Zurich, Warsaw University of Technology

publisher : arXiv

year: 2023

code: https://github.com/spcl/graph-of-thoughts

paper: https://arxiv.org/abs/2308.09687

介绍

本文提出了思维图Graph of Thoughts (GoT),是一个用于提升大语言模型提示能力的框架。与之前工作思维链(CoT)、思维树(ToT)类似,但思维图有将大语言模型产生的信息建模为图结构的能力。

文中的主要贡献如下:

  1. 提出了一种新的方法来增强大语言模型通过网络进行推理的能力。
  2. 设计了用于实现GoT的模块化框架。
  3. 展示了几个GoT的使用案例(排序、摘要关键词计数、集合操作、文档合并),并详细说明如何使用基于图的范式来实现它们。
  4. 评估GoT并展示其相对于现有技术的优势。
  5. 我们提出了一种评估提示策略的新度量标准,即思维体积。

组件

Prompter

将提示送入大语言模型。这个模块主要负责执行具体操作。

Parser

从大语言模型思想中抽取信息。应该就是把所需的信息从大语言模型的输出中提取出来。

Scoring & Validation

评估大语言模型的输出,并打分。可以由大语言模型来做,也可以由人来做。

Controller

根据GRS结构实施特定的策略来选择输出。

框架图

样例

### 集成科大讯飞星火语音SDK至Unity进行安卓开发 #### 准备工作 为了在Unity环境中成功集成并使用科大讯飞星火语音SDK,开发者需先完成一系列准备工作。这包括但不限于下载适用于Android平台的最新版本SDK包文件[^1]。 #### 创建Unity工程并SDK对接 创建一个新的Unity项目或是打开现有的项目,在Assets目录下建立Plugins/Android子文件夹用于存放解压后的jar及相关资源文件。接着按照官方文档指示调整build.gradle配置确保编译环境兼容性良好[^2]。 #### 编写C#脚本实现功能交互 通过编写特定的C#类来封装Java层的方法调用逻辑,可以方便地从游戏场景内部触发语音服务请求。下面给出了一段简单的代码片段作为参考: ```csharp using UnityEngine; using System.Collections; public class IFlySpeech : MonoBehaviour { private AndroidJavaObject currentActivity = null; void Start(){ using (var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); } // 初始化引擎实例化对象 var engine = new AndroidJavaObject("com.iflytek.cloud.SpeechUtility"); string appid="5f7b8e9a"; // 应用ID,请替换为您自己的应用ID engine.CallStatic("createUtility", currentActivity , "appid="+appid); } public void BeginRecording() { Debug.Log("开始录音啦"); if(currentActivity !=null){ currentActivity.Call("runOnUiThread",new AndroidJavaRunnable(() => { try{ using(var cls=new AndroidJavaClass("com.example.plugin.MainActivity")){ cls.CallStatic("startListening"); } }catch(System.Exception e){ Debug.LogError(e.Message); } })); } } } ``` 此段程序展示了如何利用`AndroidJavaClass``AndroidJavaObject`跨语言特性访问原生组件,并执行初始化以及启动监听操作。注意这里假设存在名为`MainActivity.java`的应用入口点负责处理实际业务流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值