工具调用AI系统

一个模块化的AI系统,结合了微调LLM(用于工具调用生成)和第二个LLM(用于人性化技术响应),支持自然语言推理和工具调用。

  • by EmreCandan0
  • Jupyter Notebook
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 EmreCandan0/fine-tuned-llm-tool-calling

使用说明

🚀 微调llm工具调用

用于LLM驱动的工具调用和自然语言推理的模块化AI系统——将微调的LLM(用于函数/工具调用生成)与第二个LLM(使技术响应人性化)相结合。


📑 目录


🧩 概述

  • 微调LLM (针对工具调用进行了优化)解释用户请求,并与MCP(模型上下文协议)服务器交互,以进行地理空间或基于文件的操作。
  • 第二法学硕士 (通过LangChain)将原始JSON/技术响应转换为清晰、人性化的语言。
  • 易于扩展 通过MCP连接到任何后端工具或API。

🔄 工作流程

用户输入-> 微调LLM(工具调用JSON)-> MCP服务器(文件/地理处理)-> 原始JSON输出-> LangChain法学硕士(语言化)-> 人类可读响应

Workflow steps (plain English):

用户输入→ 微调后的LLM生成工具调用JSON。

JSON在MCP服务器上执行(例如,文件分析、裁剪、NDVI计算)。

原始输出由第二个LLM(LangChain)转换为人类可读的文本。

结果以清晰、可操作的反馈形式呈现。


✨ 核心功能

对GeoTIFF、图像分析和空间数据工具的开箱即用支持。

可轻松扩展到任何MCP支持的功能/工具。

设计用于前端集成作为“代理”后端。

可扩展、模块化和完全开源。


🧰 模块功能

微调.pynb

使用Uncloth加载并准备Qwen2.5模型。

将基于JSON的工具调用数据集转换为ShareGPT格式。

对SFT(监督微调)的数据进行标准化和标记化。

使用TRL的SFTTrainer训练模型。

保存并合并LoRA适配器。

演示如何使用ShareGPT样式的输入导出和测试模型。


mcp_server.py

作为FastMCP代理加载以调用地理空间工具。

分析TIFF/JP2文件,返回边界框、条带、EPSG等。

使用坐标裁剪TIFF/JP2图像,另存为PNG。

计算指定点(x,y)的平均NDVI和NDVI。

返回数字高程模型(DEM)值。

退出时清理临时目录。


api.py

REST API,用于LLM驱动的工具调用和自然语言输出。

加载经过微调的LLM,用于解析提示和函数调用。

与MCP服务器集成以执行后端工具。

使用LangChain+LLM(例如Ollama,phi3)来表达回应。

返回技术和人性化的结果。


prompter.py

用于与LLM+MCP后端交互的简单命令行界面。

向/生成端点发送用户提示。

自动解析和打印人类可读和技术输出。


⚡ 快速开始

运行后端MCP服务器:

python mcpserver.py

启动API服务器:

python api.py

(可选)启动CLI提示程序:

python prompter.py


📝 输入和输出示例

工具调用数据集格式

{

“消息”:[

{"role": "user", "content": "Your instruction..."},

{"role": "assistant", "content": "TOOL_NEEDED: ...\nPARAMS: {...}"}

]

}

API示例输出

{

“输出”:“TOOL_NEEDED:analyze_tiff\n参数:{”文件路径“:”C:/Users/emre/Desktop/abc.tif“}”,

“工具”:[

{

  "tool_name": "analyze_tiff",
  
  "params": {"filepath": "C:/Users/emre/Desktop/abc.tif"},
  
  "tool_result": {"message": "JP2 analyzed successfully.", "...": "..."},
  
  "human_result": "This file contains a 3-band RGB GeoTIFF..."
  
}

]

}


📁 文件概述

finetuning.ipynb——主笔记本(所有代码单元格和注释)

toolcalling_dataset.jsonl——示例数据集(/content/toolcalling_dataet.jsonl)

lora_model/,merged_model/--输出模型文件夹

mcp_server.py——用于地理空间工具端点的FastMCP代理

api.py-用于LLM+MCP工具调用的REST api

prompter.py——用于提示测试的CLI


截图

正在运行的服务器:

api.py

mcp_server.py


提示和工具调用:

prompter.py

api.py

mcp_server.py

prompter.py