GreptimeAI + Xinference 联合方案:高效部署并监控你的 LLM 应用

随着人工智能技术的迅速进步,OpenAI 已经崭露头角,成为该领域的领军者之一。它在多种语言处理任务上表现卓越,包括机器翻译、文本分类和文本生成等方面。随着 OpenAI 的兴起,同时涌现的还有许多其他优质的开源大语言模型,比如 Llama,ChatGLM,Qwen 等等,这些优秀的开源模型也可以帮助团队快速地搭建出一个出色的 LLM 应用。

但面对如此多的选择,如何在减少开发成本的同时,能够统一地使用 OpenAI 的接口?如何能高效地持续监控 LLM 应用的运行表现,而又不增加额外的开发复杂度?在这些问题上,GreptimeAI 和 Xinference 提供了切实可行的解决方案。

什么是 GreptimeAI

GreptimeAI 构建在开源时序数据库 GreptimeDB 之上,是为大型语言模型(LLM)应用提供的一套可观测性的解决方案,目前已经支持 LangChain 和 OpenAI 的生态。GreptimeAI 使您能够实时全面地了解成本、性能、流量和安全性方面的情况,帮助团队提升 LLM 应用的可靠性。

什么是 Xinference

Xinference 是一个专为大型语言模型(LLM)、语音识别模型和多模态模型设计的开源模型推理平台,支持私有化部署。Xinference 提供了与 OpenAI API 兼容的 RESTful API,并集成了 LangChain、LlamaIndex 和 Dify.AI 等第三方开发者工具,便于模型的集成与开发。Xinference 集成了多个 LLM 推理引擎(如 Transformers、vLLM 和 GGML),适用于不同硬件环境, 并支持分布式多机部署,能够在多个设备或机器间高效分配模型推理任务,满足多模型和高可用的部署需要。

GreptimeAI + Xinference 部署/监控 LLM 应用

接下来,我们将以 Qwen-14B 模型为例,详细介绍如何使用 Xinference 在本地部署和运行模型。这里将展示一个例子,其使用了类似 OpenAI 函数调用(Function Calling)的方式来执行天气查询,并演示了如何利用 GreptimeAI 监控 LLM 应用的使用情况。

注册并获取 GreptimeAI 配置信息

访问 console.greptime.cloud 注册服务,并创建 AI 服务,跳转到 AI Dashboard 之后,点击 Setup 页面,获取 OpenAI 的配置信息。

启动 Xinference 模型服务

在本地启动 Xinference 模型服务的方式非常简单,只需要输入如下命令即可:

lua 复制代码
xinference-local -H 0.0.0.0

Xinference 默认会在本地启动服务,端口默认为 9997。这里省略了在本地安装 Xinference 的过程,可以参考 这篇文章 进行安装。

Web UI 方式启动模型

Xinference 启动之后,在浏览器中输入 http://localhost:9997 来访问 Web UI。

命令行方式启动模型

我们也可以使用 Xinference 的命令行工具来启动模型,默认 Model UID 是 qwen-chat(后续将通过这个 ID 来访问模型)。

xinference launch -n qwen-chat -s 14 -f pytorch

通过 OpenAI 风格的接口获取天气信息

假设我们有能力通过调用 get_current_weather 函数来获取指定城市的天气信息,参数为 locationformat

配置 OpenAI 以及调用接口

通过 OpenAI 的 Python SDK 访问 Xinference 本地端口,并使用 GreptimeAI 收集数据,使用 chat.completions 接口创建对话,并且通过 tools 来指定刚刚我们定义的函数列表。

ini 复制代码
from greptimeai import openai_patcher
from openai improt OpenAI

client = OpenAI(
    base_url="http://127.0.0.1:9997/v1",
)
openai_patcher.setup(client=client)

messages = [
    {"role": "system", "content": "你是一个有用的助手。不要对要函数调用的值做出假设。"},
    {"role": "user", "content": "上海现在的天气怎么样?"}
]
chat_completion = client.chat.completions.create(
    model="qwen-chat",
    messages=messages,
    tools=tools,
    temperature=0.7
)
print('func_name', chat_completion.choices[0].message.tool_calls[0].function.name)
print('func_args', chat_completion.choices[0].message.tool_calls[0].function.arguments)

tools 细节

Function calling 函数(工具)列表的定义如下,并且指定了必填字段。

ini 复制代码
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_current_weather",
            "description": "获取当前天气",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "城市,例如北京",
                    },
                    "format": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"],
                        "description": "使用的温度单位。从所在的城市进行推断。",
                    },
                },
                "required": ["location", "format"],
            },
        },
    }
]

输出如下,可以看到我们通过 chat_completion 得到了 Qwen 模型生成的函数调用:

vbnet 复制代码
func_name: get_current_weather
func_args: {"location": "上海", "format": "celsius"}

获取 function call 结果并再次调用接口

这里假设我们用给定的参数调用了 get_current_weather 函数,并已经获取到了结果,将结果和上下文重新发送给 Qwen 模型:

ini 复制代码
messages.append(chat_completion.choices[0].message.model_dump())
messages.append({
    "role": "tool",
    "tool_call_id": messages[-1]["tool_calls"][0]["id"],
    "name": messages[-1]["tool_calls"][0]["function"]["name"],
    "content": str({"temperature": "10", "temperature_unit": "celsius"})
})

chat_completion = client.chat.completions.create(
    model="qwen-chat",
    messages=messages,
    tools=tools,
    temperature=0.7
)
print(chat_completion.choices[0].message.content)

最终结果

Qwen 模型最终将输出这样的响应:

上海现在的温度是 10 摄氏度。

GreptimeAI 看板

在 GreptimeAI 的 Dashboard 页面,你可以全面且实时地监控基于 OpenAI 接口的所有调用数据,包括了 token、cost、latency、trace 等关键指标。下面展示的是仪表板的 overview 页面。

总结

如果你正在使用开源模型构建 LLM 应用,并希望用 OpenAI 的风格进行 API 调用,那么使用 Xinference 来管理推理模型,配合 GreptimeAI 来监控模型运行情况是个不错的选择。无论是进行复杂的数据分析还是简单的日常查询,Xinference 都能提供强大而灵活的模型管理能力。同时,结合 GreptimeAI 的监控功能,你可以更加高效地了解和优化模型的性能和资源消耗。

我们期待你的尝试,并欢迎分享使用 GreptimeAI 和 Xinference 的经验和见解。让我们一起探索人工智能的无限可能性吧!

关于 Greptime 的小知识:

Greptime 格睿科技于 2022 年创立,目前正在完善和打造时序数据库 GreptimeDB,格睿云 GreptimeCloud 和可观测工具 GreptimeAI 这三款产品。

GreptimeDB 是一款用 Rust 语言编写的时序数据库,具有分布式、开源、云原生和兼容性强等特点,帮助企业实时读写、处理和分析时序数据的同时降低长期存储成本;GreptimeCloud 可以为用户提供全托管的 DBaaS 服务,能够与可观测性、物联网等领域高度结合;GreptimeAI 为 LLM 量身打造,提供成本、性能和生成过程的全链路监控。

GreptimeCloud 和 GreptimeAI 已正式公测,欢迎关注公众号或官网了解最新动态!

官网:greptime.cn/

GitHub: github.com/GreptimeTea...

文档:docs.greptime.cn/

Twitter: twitter.com/Greptime

Slack: greptime.com/slack

LinkedIn: www.linkedin.com/company/gre...

相关推荐
营赢盈英12 小时前
Allow anonymous access to my Azure OpenAI chat bot
ai·openai·azure·webapps
网络研究院2 天前
解码 OpenAI 的 o1 系列大型语言模型
人工智能·语言模型·自然语言处理·openai·技术·推理·能力
营赢盈英2 天前
OpenAI GPT-3 API error: “You must provide a model parameter“
chatgpt·gpt-3·openai·swift
营赢盈英2 天前
OpenAI API key not working in my React App
javascript·ai·openai·reactjs·chatbot
营赢盈英3 天前
Using OpenAI API from Firebase Cloud Functions in flutter app
ai·node.js·openai·googlecloud·firebase
营赢盈英5 天前
404 error when doing workload anlysis using locust on OpenAI API (GPT.35)
人工智能·python·openai·locust
CaiYongji5 天前
深度!程序员生涯的垃圾时间(上)
人工智能·gpt·chatgpt·openai
营赢盈英6 天前
How to see if openAI (node js) createModeration response “flagged“ is true
javascript·ai·node.js·openai·api
营赢盈英7 天前
How to handle the response OpenAI Text-To-Speech API in Node.js?
ai·node.js·openai·openai api·response
营赢盈英9 天前
Azure OpenAI models being unable to correctly identify model
ai·openai·azure·azure ai