functionary

让大模型学会用工具,对话中直接调API拿结果

functionary是一个能调用工具并解读结果的开源聊天语言模型。它解决的是传统大模型只能生成文本、无法执行实际动作的问题,让模型在对话中自主决定调用外部API或工具,并理解工具返回的数据。核心能力包括:基于函数定义(如JSON Schema)精准触发工具调用、支持多轮工具交互、以及将工具结果自然融入对话。项目提供模型权重和推理代码,基于Python实现,方便开发者集成到自己的应用中。它适合构建智能代理(Agent)、自动化工作流和需要实时数据查询的对话系统。

开源 free 开源模型
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 1596
维护状态 维护中
是否开源
定价模式 free

项目数据

分类开源模型
开发团队MeetKai
所属国家
官网地址
定价模式free
价格说明开源模型,MIT许可证,完全免费,可自行部署使用。
访问状态
是否开源
开源协议MIT
主要语言Python
技术栈/模型agents,ai,ai-agents,function-calling,llm,ml,python
GitHub 星标★ 1596
30天Star增速
HF 下载量
上线时间2023-07-11 00:00:00
最近更新2026-09-15 00:00:00
维护状态维护中
中文支持
访问方式
移动端支持
综合评分
收录时间2026-08-09
浏览次数4

使用教程

难度:进阶 约 30 分钟 部署方式:本地安装 8 步

环境要求

  • Python 环境,可用 pip 安装依赖
  • GPU 环境(vLLM/SGLang 推理需要,README 使用 --tensor-parallel-size 2 / --tp 2)
  • 已安装 vLLM 或 SGLang 其中一种(二选一)
  • 能访问 Hugging Face 下载模型权重(如 meetkai/functionary-medium-v3.1)

安装与启动步骤

  1. 1获取项目代码

    克隆仓库并进入目录,后续 pip install -e . 需要在仓库根目录执行。

    git clone https://github.com/MeetKai/functionary.git
    cd functionary
  2. 2安装 vLLM 版本依赖

    二选一:使用 vLLM 作为推理后端时执行该命令安装依赖。

    pip install -e .[vllm]
  3. 3安装 SGLang 版本依赖

    二选一:使用 SGLang 后端时执行,需带 flashinfer 的 find-links 参数。

    pip install -e .[sglang] --find-links https://flashinfer.ai/whl/cu124/torch2.5/flashinfer-python
  4. 4设置 vLLM 环境变量

    vLLM 必须先设置该变量,否则多进程方式可能导致启动失败。

    export VLLM_WORKER_MULTIPROC_METHOD=spawn
  5. 5启动 vLLM 服务

    启动 OpenAI 兼容服务,按显存调整 max-model-len 与 tensor-parallel-size(示例为 2 卡)。

    python server_vllm.py --model "meetkai/functionary-medium-v3.1" --host 0.0.0.0 --port 8000 --max-model-len 8192 --tensor-parallel-size 2
  6. 6启动 SGLang 服务

    vLLM 之外的另一种启动方式,参数名不同:model-path、context-length、tp。

    python server_sglang.py --model-path "meetkai/functionary-medium-v3.1" --host 0.0.0.0 --port 8000 --context-length 8192 --tp 2
  7. 7OpenAI 兼容方式调用

    服务默认监听 8000 端口,用 OpenAI SDK 指向 http://localhost:8000/v1 并传入 tools 定义。

    from openai import OpenAI
    
    client = OpenAI(base_url="http://localhost:8000/v1", api_key="functionary")
    
    client.chat.completions.create(
        model="meetkai/functionary-v4r-small-preview",
        messages=[{"role": "user",
                "content": "What is the weather for Istanbul?"}
        ],
        tools=[{
                "type": "function",
                "function": {
                    "name": "get_current_weather",
                    "description": "Get the current weather",
                    "parameters": {
                        "type": "object",
                        "properties": {
                            "location": {
                                "type": "string",
                                "description": "The city and state, e.g. San Francisco, CA"
                            }
                        },
                        "required": ["location"]
                    }
                }
            }],
        tool_choice="auto"
    )
  8. 8Modal 无服务器部署

    可选:安装并登录 Modal 后,创建环境、切换环境、本地 serve 调试,最后 deploy 上线。

    modal environment create dev
    modal config set-environment dev
    modal serve modal_server_vllm
    modal deploy modal_server_vllm

关键配置

配置项必填说明示例
modelvLLM 启动时的模型名称,也作为请求中的 model 字段meetkai/functionary-medium-v3.1
model-pathSGLang 启动时指定模型路径或 Hugging Face 名称meetkai/functionary-medium-v3.1
host服务监听地址,0.0.0.0 表示对外可访问0.0.0.0
port服务端口,调用接口时需保持一致8000
max-model-lenvLLM 最大上下文长度,按显存情况调整8192
tensor-parallel-sizevLLM 张量并行卡数,示例为 2 张 GPU2

如何确认成功

服务启动后监听 8000 端口,用 OpenAI SDK 或 requests POST 到 http://127.0.0.1:8000/v1/chat/completions 能正常返回结果即成功。

常见问题

Q:vLLM 启动时报 multiprocessing 相关错误怎么办?

A:README 提示 vLLM 需要先执行 export VLLM_WORKER_MULTIPROC_METHOD=spawn 再启动 server_vllm.py。

Q:vLLM 和 SGLang 可以都装吗?

A:README 说明二者任选其一即可,安装依赖和启动脚本都不一样,选一个后端按对应命令执行。

Q:调用时 API key 填什么?

A:OpenAI SDK 示例中 api_key 直接填 "functionary";原始 requests 示例使用 Authorization: Bearer xxxx 头部。

Q:这个项目现在还能用吗?

A:README 顶部标注项目已废弃、不再维护,仓库是较旧的快照,仅作参考,官方不再提供更新与支持。

注意事项

  • 项目已标记 deprecated,代码和文档可能已过时,不建议用于新生产系统。
  • 示例命令使用 2 卡并行并加载较大模型,需要足够显存,可按实际硬件调整参数。
  • README 给出了 vLLM 与 SGLang 两套部署路径,请只选择其中一套,避免混用参数。
  • 使用 Modal 部署前需先注册账号并安装 Modal、完成登录。

核心亮点

  • 精准解析函数Schema,工具调用成功率高
  • 支持多轮工具交互,能根据结果继续追问
  • 轻量级模型,推理成本低,易于本地部署

不足之处

  • 模型规模较小,复杂推理能力弱于大参数模型
  • 文档/社区待观察

适用场景

  • 构建能查天气、订票等实时信息的客服机器人
  • 开发自动化工作流,让模型调用内部API完成任务
  • 作为智能代理的核心,处理需要外部数据决策的场景

替代项目

Gorilla、Toolformer、ReAct

项目介绍

functionary 是开发框架领域的开源项目,由 MeetKai 开发,2023 年首次发布。

在全站 13,014 个收录项目中,它的 GitHub 星标数(1,596)位列前 30%,在开发框架分类中处于中上游。

项目仍在小幅维护中,最近一次代码更新于 2026-09-15。MIT许可证,完全免费,可自行部署使用。

它主要面向的使用场景是:构建能查天气、订票等实时信息的客服机器人。同类可对比的替代方案包括 Gorilla、Toolformer、ReAct。

上一篇:llm-chain

下一篇:ExtractThinker

同类项目推荐

langchain 开源

组装 AI 应用的乐高积木,从想法到上线不换工具

The agent engineering platform.

★ 146874 2026-08-09
transformers 开源

全球最大的模型仓库全家桶,想用的模型一把抓

Transformers: the model-definition framework for state-of-the-art machine learning m···

★ 166529 2026-08-09
pi 开源

一套 TypeScript 工具包,快速搭出能写代码的 AI agent

AI agent toolkit: unified LLM API, agent loop, TUI, coding agent CLI

★ 108504 2026-09-12