Tích Hợp Function Calling với Qwen2.5-7B: Xây Dựng Agent Tự Chủ

Thiết Lập Môi Trường và Cấu Hình Mô Hình

Để triển khai Agent sử dụng Function Calling, trước tiên cần thiết lập môi trường chạy Qwen2.5-7B-Instruct. Dưới đây là quy trình tối ưu cho hệ thống đa nền tảng:

# Cài đặt mô hình qua Ollama (4.2GB phiên bản quantized)
ollama pull qwen2.5-7b-instruct

# Kiểm tra hoạt động
ollama run qwen2.5-7b-instruct "Xác thực mô hình"

Cơ Chế Function Calling trong Thực Tế

Function Calling chuyển đổi yêu cầu ngôn ngữ tự nhiên thành lời gọi hàm có cấu trúc. Quy trình xử lý bao gồm:

  1. Phân tích ngữ nghĩa: Xác định mục đích người dùng (ví dụ: "Kiểm tra thời tiết Hà Nội ngày mai")
  2. Ánh xạ công cụ: Chọn hàm phù hợp từ danh sách được định nghĩa
  3. Trích xuất tham số: Rút gọn location="Hà Nội", date="ngày mai"
  4. Tạo payload JSON: Định dạng chuẩn để hệ thống thực thi

Triển Khai Agent với Python

Định nghĩa công cụ

# tools.py
import random
from datetime import datetime

def lay_thoi_tiet(vi_tri: str, ngay: str = "hôm nay") -> str:
"""
Lấy thông tin thời tiết qua API giả lập
"""
mua = ["mưa rào", "nắng nhẹ", "âm u"]
nhiet_do = f"{random.randint(22, 28)}-{random.randint(29, 35)}°C"
return f"{vi_tri} {ngay}: {random.choice(mua)}, {nhiet_do}"

def gui_thu(dia_chi: str, chu_de: str, noi_dung: str) -> str:
"""
Gửi email qua cơ chế giả lập
"""
return f"Đã gửi thành công đến {dia_chi[:5]}... với chủ đề '{chu_de[:10]}..."

# Mô tả công cụ cho mô hình
danh_sach_cong_cu = [
    {
        "type": "function",
        "function": {
            "name": "lay_thoi_tiet",
            "description": "Tra cứu thời tiết theo thành phố và ngày",
            "parameters": {
                "type": "object",
                "properties": {
                    "vi_tri": {"type": "string", "description": "Tên thành phố (VD: Hà Nội, TP.HCM)"},
                    "ngay": {"type": "string", "description": "Ngày cần tra (mặc định: hôm nay)"}
                },
                "required": ["vi_tri"]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "gui_thu",
            "description": "Gửi email đến địa chỉ chỉ định",
            "parameters": {
                "type": "object",
                "properties": {
                    "dia_chi": {"type": "string"},
                    "chu_de": {"type": "string"},
                    "noi_dung": {"type": "string"}
                },
                "required": ["dia_chi", "chu_de", "noi_dung"]
            }
        }
    }
]

Quy trình xử lý chính

# core_agent.py
from ollama import Client

def xu_ly_yeu_cau(nhap_lieu: str, lich_su: list):
client = Client()
phat_hien_cong_cu = client.chat(
model="qwen2.5-7b-instruct",
messages=[{"role": "user", "content": nhap_lieu}],
tools=danh_sach_cong_cu
)

if "tool_calls" in phat_hien_cong_cu["message"]:
ket_qua = []
for goi_ham in phat_hien_cong_cu["message"]["tool_calls"]:
ten = goi_ham["function"]["name"]
tham_so = goi_ham["function"]["arguments"]

if ten == "lay_thoi_tiet":
ket_qua.append(lay_thoi_tiet(**tham_so))
elif ten == "gui_thu":
ket_qua.append(gui_thu(**tham_so))

# Phản hồi sau khi xử lý công cụ
return client.chat(
model="qwen2.5-7b-instruct",
messages=[
{"role": "user", "content": nhap_lieu},
{"role": "assistant", "content": str(ket_qua)}
]
)["message"]["content"]
return phat_hien_cong_cu["message"]["content"]

Tối Ưu Hiệu Năng Triển Khai

Để tăng độ tin cậy cho hệ thống, áp dụng các biện pháp sau:

  • Xác thực tham số: Thêm kiểm tra định dạng email và tên thành phố trước khi gọi API
  • Xử lý lỗi thông minh: Thiết lập cơ chế thử lại 3 lần khi gọi dịch vụ bên ngoài thất bại
  • Tối ưu lịch sử hội thoại: Giới hạn 10 tin nhắn gần nhất để tránh vượt quá giới hạn context window
  • Mở rộng công cụ: Tích hợp thêm các dịch vụ như tra cứu bản đồ, đặt lịch qua Google Calendar API

Ví dụ kiểm thử hiệu quả:

# Yêu cầu phức hợp
"Kiểm tra thời tiết Đà Nẵng ngày mai, nếu nắng đẹp hãy gửi email cho anh Nam 
với chủ đề 'Đi chơi' và nội dung 'Chuẩn bị đồ bơi nhé!"

Thẻ: qwen2.5 function-calling autonomous-agent ollama-deployment tool-integration

Đăng vào ngày 25 tháng 5 lúc 09:51