国内大模型快速实现函数调用

部署运行你感兴趣的模型镜像

环境搭建

pip install openai httpx os json
在阿里云百炼平台上创建实例,获取大模型的api key
export DASHSCOPE_API_KEY="your-api-key"
检查环境变量是否写入
echo $DASHSCOPE_API_KEY

在这里插入图片描述

使用国内大模型实现function calling demo

因为上篇博客是从openai里创建api-key,支付方式不支持国内,故简单做法可直接使用国内大模型的api,且首次创建有免费额度可以使用,推荐。
且服务器不用走代理。

from openai import OpenAI
import os, json, httpx

# —— 关键:把 openai SDK 指向 Qwen 的“OpenAI 兼容”地址,并使用 DashScope 的 API Key ——
client = OpenAI(
    api_key=os.environ.get("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    # 如需代理可解除注释并修改端口:
    # http_client=httpx.Client(proxies="http://127.0.0.1:7890", timeout=30.0)
)

# 1) 定义工具(函数)schema
tools = [
    {
        "type": "function",
        "function": {
            "name": "add",
            "description": "计算两个数相加的结果",
            "parameters": {
                "type": "object",
                "properties": {
                    "a": {"type": "number", "description": "加数1"},
                    "b": {"type": "number", "description": "加数2"}
                },
                "required": ["a", "b"],
                "additionalProperties": False
            }
        }
    }
]

# 2) 本地实现要被调用的函数
def add(a: float, b: float) -> float:
    return a + b

FUNC_MAP = {"add": add}

# 3) 用户提问
messages = [{"role": "user", "content": "请把 1.5 和 2.25 相加"}]

# 4) 第一次请求:允许模型决定是否调用函数
resp = client.chat.completions.create(
    model="qwen-plus",         # 也可以用 "qwen-max" / "qwen-turbo" 等
    messages=messages,
    tools=tools,
    tool_choice="auto"
)

msg = resp.choices[0].message
print("🔎 模型第一次输出:", msg)

# 5) 如果模型请求调用函数:解析参数 → 本地执行 → 回传结果
if msg.tool_calls:
    tc = msg.tool_calls[0]
    name = tc.function.name
    args = json.loads(tc.function.arguments or "{}")
    result = FUNC_MAP[name](**args)

    messages.extend([
        msg,  # 模型的函数调用请求
        {
            "role": "tool",
            "tool_call_id": tc.id,
            "name": name,
            "content": json.dumps({"result": result}, ensure_ascii=False)
        }
    ])

    # 6) 让模型把结构化结果转成自然语言
    final = client.chat.completions.create(
        model="qwen-plus",
        messages=messages
    )
    print("✅ 最终回答:", final.choices[0].message.content)
else:
    print("✅ 最终回答(未调用工具):", msg.content)

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值