KAKAO功能聊天台(OpenRouter)
通过OpenRouter API, 工具使用(函数调用)능력 评估并自动生成专业Excel报告的项目。
目录
项目简介
评估概述
功能聊天台 测量LLM在韩语对话上下文中选择和使用工具(函数)的准确性。特别是超越了单纯的呼叫。 保持对话节奏的能力 重点评估。
区分
详细信息
源代码
Kakao FunctionChat-Bench
评价语言韩语
评分方式
LLM-as-Judge(基于GPT-4.1的自动评分)
总规模
共1306个测试案例
评估类型和定义
类型
定义
正确模型的行为
呼叫
调用工具
选择正确的函数并提取参数(Arguments)
完成
传达结果
用自然的韩语摘要回复工具运行结果
插槽
信息请求
如果缺少必需参数,请向用户提出其他问题
相关性
关联性判断
如果无法通过工具解决,请适当拒绝并说明
配置数据集
比较数据集(单转与多转)
此基准不仅包括单发呼叫,还包括与实际服务类似的连续对话环境。
数据集对话类型评估数量特征
|:---|:---:|:---:|:---|
| 单调用 | 单转身(Single-turn) | 500件|测量立即为给定问题选择适当函数的能力|
| 对话 | 多转弯(Multi-turn) | 200件|衡量您在保持之前的对话上下文的同时分阶段使用工具的能力|
| 呼叫决策 |混合| 606件|衡量当前是否需要调用函数的能力
多转(Dialog)结构详细信息
在一个场景中,对话将累积并进行评估。
复制 [ 대화 흐름 예시 ]
Turn 1 (Slot 평가)
User: "새 계정을 만들고 싶어요."
Assistant: "성함과 이메일을 알려주시겠어요?" (필수 정보 요청)
Turn 2 (Call 평가)
User: "이름은 홍길동, 이메일은 hong@example.com 입니다."
Assistant: tool_calls: create_user(name="홍길동", ...) (함수 호출)
Turn 3 (Completion 평가)
Tool: {"status": "success"}
Assistant: "계정 생성이 완료되었습니다." (결과 요약 응답)
配置SingleCall难度
难度类型
候选函数配置
评估目的
1_exact
1个答案
是否符合默认的函数调用格式
4_random
1个答案+3个无关函数
在有明显差异的情况下的选择能力
4_close
1个答案+3个类似域函数
区分细微功能差异的精度
8_random
1个答案+7个无关函数
多选项搜索效率
8_close
1个答案+7个类似域函数
在高难度情况下选择最佳函数的能力
评估过程
系统体系结构流程图
复制 [ 입력 데이터 ] ─────────┐
(Query + Tools) │
▼
[ 평가 대상 모델 ] ─────── (OpenRouter API 호출)
(Response 생성) │
▼
[ 1차 검증 ] ─────────── (Exact Match 확인)
(정답과 일치 여부) │
▼
[ 2차 채점 ] ─────────── (LLM-as-Judge: GPT-4.1)
(Rubric 기반 평가) │
▼
[ 결과 산출 ] ─────────── (TSV 저장 및 Excel 리포트 생성)
评分标准(Pass/Fail)
评估项目
Pass标准
Fail主要原因
呼叫
匹配函数名和所有参数(Key/Value)
函数错误选择,缺少参数,生成幻觉值
完成
自然地传递结果值,不失真;按照JSON格式输出;语义扭曲;英语回复
插槽
询问所有缺少的必要信息
只询问部分信息,不询问任何问题,以任意值调用
相关性
意识到不可能并适当拒绝
调用无关的函数,谎称做了不可能做的事情
结果分析
最终基准测试结果(完成1306项全部评分)
排名
型号
Dialog(200)
SingleCall(500)
CallDecision(606)
准确度
1
Qwen3-32B
47.5%
85.8%
31.7%
54.8%
2
Qwen3-Next-80B
42.5%
80.0%
32.7%
52.3%
3
Qwen3-14B
42.0%
80.6%
30.7%
51.5%
4
Llama-3.3-70B
48.0%
41.6%
10.7%
28.3%
5
米斯特拉尔·斯莫尔-24B
47.0%
16.0%
31.7%
28.0%
特定型号的特性和关键问题
特定型号的详细分析
型号名称
优势
劣势
综合评价
Qwen3-32B 以85.8%的支持率压倒性地排在第一位,以31.7%的支持率进行了一般的Tool-use特殊调整。性价比最高
Qwen3-Next-80B
CallDecision 32.7%,最高80B,但综合得分低于32B,呼叫判断良好,但实际呼叫准确率32B更好
Qwen3-14B
与小型机型相比,SingleCall符合率为80.6%
Dialog略低于42.0%
在轻量化环境中值得推荐的性能
Llama-3.3-70B
Dialog 48.0%,整体排名第一
CallDecision 10.7%,排名垫底
对话能力优秀,但没有Tool-use特殊调整
米斯特拉尔·斯莫尔-24B
符合Dialog 47.0%
SingleCall 16.0%,最低
函数选择能力非常差
评估中发现的主要问题
模型
问题类型
详细信息
影响
Llama-3.3-70B
CallDecision脆弱性
在需要函数调用的情况下,倾向于只用自然语言进行响应,或者在不必要的情况下强行调用CallDecision准确率10.7%(最低)
米斯特拉尔·斯莫尔-24B
函数选择错误
在类似函数中找不到正确答案而选择其他函数的比率较高
SingleCall准确率16.0%(最低)
米斯特拉尔·斯莫尔-24B
tool_call_id格式
生成一个与标准格式不同的ID,导致解析错误
在代码级使用9位字母数字进行normalize处理
Qwen系列
型号大小逆转
80B型号得分低于32B
Tool-use特殊调整版本比型号大小更重要
按用途推荐型号
用途
推荐模式
原因
Agent角色(以Tool调用为中心) Qwen3-32B
SingleCall 85.8%,函数选择准确率最高
聊天机器人回答(以对话质量为中心) Llama-3.3-70B Dialog 48.0%,自然对话能力最强
轻量化环境 Qwen 3-14B
在14B尺寸下选择函数的准确率超过80%
均衡的性能
Qwen3-Next-80B
在所有类别中均符合性能要求
核心代码文件
项目结构
复制 KAKAO-FunctionChat-Bench/
├── run_evaluation.py # [1] 전체 평가 자동화 스크립트
├── quick_test.py # [2] 빠른 검증용 테스트 스크립트
├── generate_excel_report.py # [3] Excel 리포트 생성기
├── .env # API 키 설정 (git 제외)
│
└── FunctionChat-Bench/
├── evaluate.py # [4] 벤치마크 엔진 (CLI 엔트리)
├── config/
│ └── openai.cfg # [5] Judge 모델 설정
└── src/
├── api_executor.py # [6] API 호출 및 재시도 로직
└── evaluation_handler.py # [7] LLM-as-Judge 채점 로직
核心文件详细信息
编号文件名角色执行方法
|:---:|:---|:---|:---|
| 1 | run_evaluation.py |自动完成5个模型的全面评估+报告生成| python run_evaluation.py |
| 2 | quick_test.py |按类别取样后快速验证| python quick_test.py --sample-size 2 |
| 3 | generate_excel_report.py |将TSV结果转换为Excel报告| python generate_excel_report.py |
| 4 | evaluate.py |评估单个数据集(Dialog/SingleCall/Common)|请参阅下面的详细命令
| 5 | openai.cfg | Judge模型和API端点设置|直接编辑|
| 6 | api_executor.py | OpenRouter API集成+指数回退重试|内部模块(直接运行X)|
| 7 | evaluation_handler.py GPT-4.1 Judge调用+实时结果存储内部模块(直接运行X)
evaluate.py单独执行命令
复制 # Dialog (멀티턴) 평가
python evaluate.py dialog \
--input_path data/FunctionChat-Dialog.jsonl \
--system_prompt_path data/system_prompt.txt \
--model "qwen/qwen3-32b" \
--api_key $OPENROUTER_API_KEY \
--base_url "https://openrouter.ai/api/v1"
# SingleCall (싱글턴) 평가
python evaluate.py singlecall \
--input_path data/FunctionChat-Singlecall.jsonl \
--system_prompt_path data/system_prompt.txt \
--tools_type all \
--model "qwen/qwen3-32b" \
--api_key $OPENROUTER_API_KEY \
--base_url "https://openrouter.ai/api/v1"
# CallDecision (호출 판단) 평가
python evaluate.py common \
--input_path data/FunctionChat-CallDecision.jsonl \
--model "qwen/qwen3-32b" \
--api_key $OPENROUTER_API_KEY \
--base_url "https://openrouter.ai/api/v1"
使用指南
分步执行过程
步骤
工作内容
执行命令/方法
1
构建环境
git clone 及 pip install -r requirements.txt
2
API设置
.env 创建文件和 OPENROUTER_API_KEY 输入
3
运行测试
python quick_test.py --sample-size 2 (用于验证)
4
全面评估
python run_evaluation.py (全部评分)
5
检查报告
reports/ 检查文件夹中创建的Excel文件
已解决的问题和常见问题解答
故障诊断摘要
现象原因解决方案
|:---|:---|:---|
| 429速率限制 | Judge API调用速度限制| --num-threads 1 设置并应用指数回切|
| 402学分不足 | API余额不足|立即处理失败,然后继续下一个案例(避免Skip)
| 解析JSON错误 |模型输出格式不匹配|判断模型能力不足以处理Fail |
| API密钥暴露风险 |保存配置文件中的评语| ${ENV_VAR} 支持通过格式注入环境变量|
常见问题(FAQ)
问题
答案
如何评价多回合对话?
在包含所有先前对话历史记录的情况下,对模型的下一行为进行评分。
停止评估时从头再来吗?不是。结果将实时保存并从中断点恢复。
可以更换Judge型号吗?
config/openai.cfg的 api_version可通过修改进行更改。
参考资料和许可证
Based on FunctionChat-Bench by Kakao