functionary

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

开源 🏷️完全免费 🔧 仅开源项目,无在线服务,需自行部署 开源模型 🍴 复刻 118 🐛 待处理 38 👀 关注 19
GitHub ↗
GitHub 星标 ★ 1592
维护状态 低维护
是否开源 开源
定价模式 🏷️完全免费 开源模型,MIT许可证,完全免费,可自行部署使用。

项目预览

functionary 项目界面预览图
图片来源:GitHub 官方仓库名片

项目数据

分类开源模型
开发团队MeetKai
定价模式🏷️完全免费
价格说明开源模型,MIT许可证,完全免费,可自行部署使用。
访问状态🔧 仅开源项目,无在线服务,需自行部署
是否开源是
开源协议MIT
主要语言Python
技术栈/模型agents,ai,ai-agents,function-calling,llm,ml,python
GitHub 星标★ 1592
上线时间2023-07-11 00:00:00
代码更新2026-06-30
仓库体积3.5 MB
本站数据更新2026-11-08
维护状态低维护
收录时间2026-08-09
浏览次数5

项目介绍

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

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 1592

使用教程

难度:进阶 约 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

关键配置

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

上一篇:llm-chain

下一篇:ExtractThinker

同类项目推荐

LLMstudio 开源

让 LLM 应用从原型到生产,少踩坑、快落地

Framework to bring LLM applications to production

★ 390 2026-08-09
bulletproof 开源

把 AI 写代码变成规范化流水线,从研究到上线全程可控

Turns AI agents from chaotic code generators into disciplined engineers. 12-stage wo···

★ 155 2026-08-09
grove 开源

一条命令,为每个 Git 分支启动带 AI 助手的彩色终端工作区

AI-native terminal workspace. One command to launch colored Zellij tabs per git work···

★ 81 2026-08-09
intelligent-app-workshop 开源

用微软全家桶,快速上手构建AI应用

Immersive workshop showcasing the remarkable potential of integrating SoTA foundatio···

★ 210 2026-08-09
railtracks 开源

让AI代理更抗造,干活不翻车

An agentic framework that helps developers build resilient agentic systems

★ 235 2026-08-09
LLM2Jev 开源

本地大模型免逐字解码,prefill 一步出结构化决策结果

Turn local language models into Jev-style structured decision models. Get results fr···

★ 482 2026-09-26
ai-sdk-ollama 开源

用 AI SDK 统一接口直接调用本地 Ollama 模型

A Vercel AI SDK provider for Ollama built on the official ollama package. Type safe,···

★ 132 2026-10-29
maua 开源

一个工具箱搞定图像、视频、音频的 AI 生成

Deep learning toolkit for image, video, and audio synthesis

★ 106 2026-08-09
botkit 开源

一套代码,快速搭建跨平台聊天机器人。

Botkit is an open source developer tool for building chat bots, apps and custom inte···

★ 11584 2026-08-09