Prompto: An open source library for asynchronous querying of LLM endpoints

📄 arXiv: 2408.11847v2 📥 PDF

作者: Ryan Sze-Yin Chan, Federico Nanni, Angus R. Williams, Edwin Brown, Liam Burke-Moore, Ed Chapman, Kate Onslow, Tvesha Sippy, Jonathan Bright, Evelina Gabasova

分类: cs.CL

发布日期: 2024-08-12 (更新: 2024-12-16)

🔗 代码/项目: GITHUB


💡 一句话要点

Prompto:一个用于异步查询LLM端点的开源库,提升研究效率。

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 大型语言模型 异步查询 开源库 API交互 速率限制 并发处理 Python LLM评估

📋 核心要点

  1. 现有LLM API交互方式效率低下,需要为每个模型编写定制代码,阻碍了模型对比研究。
  2. Prompto通过异步查询LLM端点,实现并发交互,充分利用速率限制,提高效率。
  3. Prompto是一个开源Python库,旨在加速LLM的实验、数据生成和评估过程。

📝 摘要(中文)

大型语言模型(LLM)的可用性激增为研究开辟了令人兴奋的途径。然而,与这些模型进行高效交互提出了一个重大障碍,因为LLM通常驻留在专有或自托管的API端点上,每个端点都需要自定义代码进行交互。因此,对不同模型进行比较研究可能非常耗时,并且需要大量的工程工作,从而阻碍了研究效率和可重复性。为了应对这些挑战,我们提出了prompto,这是一个开源Python库,它有助于异步查询LLM端点,使研究人员能够并发地与多个LLM交互,同时最大限度地提高效率并利用各个速率限制。我们的库使研究人员和开发人员能够更有效地与LLM交互,并允许更快的实验、数据生成和评估。prompto已根据MIT许可证发布,并提供介绍视频(https://youtu.be/lWN9hXBOLyQ),可通过GitHub(https://github.com/alan-turing-institute/prompto)获得。

🔬 方法详解

问题定义:当前研究人员在使用大型语言模型(LLM)时,面临着与不同LLM API交互效率低下的问题。每个LLM通常都有自己的API端点,需要编写定制的代码才能进行交互。这使得比较不同LLM的性能变得耗时且需要大量的工程工作,严重阻碍了研究效率和可重复性。

核心思路:Prompto的核心思路是提供一个统一的接口,允许研究人员异步地查询多个LLM端点。通过并发地与多个LLM交互,并智能地管理每个LLM的速率限制,Prompto能够最大限度地提高查询效率,从而加速实验、数据生成和评估过程。

技术框架:Prompto是一个Python库,其整体架构围绕异步查询LLM端点展开。它包含以下主要模块: 1. API 客户端:封装了与不同LLM API交互的逻辑,处理身份验证、请求格式化和响应解析。 2. 异步查询引擎:负责并发地向多个LLM端点发送请求,并管理每个端点的速率限制。 3. 结果聚合器:将来自不同LLM的响应进行聚合和整理,方便研究人员进行分析和比较。

关键创新:Prompto最重要的技术创新在于其异步查询引擎,它能够并发地与多个LLM交互,并智能地管理每个LLM的速率限制。这与传统的同步查询方式相比,显著提高了查询效率,并减少了研究人员的工程负担。

关键设计:Prompto的关键设计包括: 1. 异步编程模型:使用Python的asyncio库实现异步查询,充分利用CPU和网络资源。 2. 速率限制管理:为每个LLM端点维护一个速率限制器,防止超出API的限制。 3. 可扩展的API客户端:允许用户轻松地添加对新的LLM API的支持。

🖼️ 关键图片

fig_0

📊 实验亮点

Prompto通过异步并发查询显著提升了LLM交互效率,尤其是在需要对比多个LLM时。虽然论文中没有给出具体的性能数据,但其设计理念和开源实现为研究人员提供了一个高效、便捷的LLM交互工具,加速了相关实验和评估流程。

🎯 应用场景

Prompto可广泛应用于LLM相关的研究和开发,例如模型性能对比、prompt工程、数据增强、自动化评估等。它能够显著提高研究效率,加速LLM技术的创新和应用,并促进LLM在各个领域的部署,例如自然语言处理、机器翻译、文本生成等。

📄 摘要(原文)

Recent surge in Large Language Model (LLM) availability has opened exciting avenues for research. However, efficiently interacting with these models presents a significant hurdle since LLMs often reside on proprietary or self-hosted API endpoints, each requiring custom code for interaction. Conducting comparative studies between different models can therefore be time-consuming and necessitate significant engineering effort, hindering research efficiency and reproducibility. To address these challenges, we present prompto, an open source Python library which facilitates asynchronous querying of LLM endpoints enabling researchers to interact with multiple LLMs concurrently, while maximising efficiency and utilising individual rate limits. Our library empowers researchers and developers to interact with LLMs more effectively and allowing faster experimentation, data generation and evaluation. prompto is released with an introductory video (https://youtu.be/lWN9hXBOLyQ) under MIT License and is available via GitHub (https://github.com/alan-turing-institute/prompto).