通义千问2-0.5BF-functioncall微调

我要开发同款
匿名用户2024年07月31日
188阅读

技术信息

开源地址
https://modelscope.cn/models/longdream/qwen2-0.5B-functioncall
授权协议
Apache License 2.0

作品详情

模型介绍

模型概述 我们基于 qwe2 0.5B 模型进行了微调,使其具备了 fuctio call 功能。下面示例使用了llamafactory 运行模型来提供api进行测试

您可以通过如下git cloe命令,或者ModelScope SDK来下载模型

您可以

SDK下载

#安装ModelScope
pip  istall  modelscope
#SDK模型下载
from modelscope import sapshot_dowload
model_dir = sapshot_dowload('logdream/qwe2-0.5B-fuctiocall')

Git下载

#Git模型下载
git cloe https://www.modelscope.c/logdream/qwe2-0.5B-fuctiocall.git
#fuctio call 进行测试
import os
import jso
from opeai import OpeAI
from typig import Sequece
import requests

os.eviro["OPENAI_BASE_URL"] = "http://192.168.1.103:38000/v1"
os.eviro["OPENAI_API_KEY"] = "0"


def get_rubbish_category(keyword):
    url = f"https://api.timelessq.com/garbage?keyword={keyword}"
    respose = requests.request("GET", url)
    output_str_list = []
    for item i respose.jso()['data']:
        output_str_list.apped(f"{item['ame']}: {item['categroy']}")
    retur '\'.joi(output_str_list)


def get_sog_iformatio(keyword):
    url = f"https://api.timelessq.com/music/tecet/search?keyword={keyword}"
    respose = requests.request("GET", url)
    sog_ifor = respose.jso()['data']['list'][0]
    siger = '' if ot sog_ifor['siger'] else sog_ifor['siger'][0]['ame']
    retur f"歌曲: {keyword}\歌手: {siger}\时长: {sog_ifor['iterval']}秒\专辑名称: {sog_ifor['albumame']}"


def get_cartoo_iformatio(title):
    url = f"https://api.timelessq.com/bagumi?title={title}"
    respose = requests.request("GET", url)
    data = respose.jso()['data'][0]
    retur f"标题: {data['title']}\类型:{data['type']}\语言:{data['lag']}\出品方:{data['officialSite']}\上映时间:{data['begi']}\完结事件:{data['ed']}"


tool_map = {"get_rubbish_category": get_rubbish_category,
            "get_sog_iformatio": get_sog_iformatio,
            "get_cartoo_iformatio": get_cartoo_iformatio}


if __ame__ == "__mai__":
    cliet = OpeAI()
    tools = [
        {
            "type": "fuctio",
            "fuctio": {
                            "ame": "get_cartoo_iformatio",
                            "descriptio": "根据用户提供的动漫标题,查询该动漫的相关信息。",
                            "parameters": {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "strig",
                                        "descriptio": "动漫",
                                    },
                                },
                                "required": ["title"],
                            }
                        }
        },
        {
            "type": "fuctio",
            "fuctio": {
                            "ame": "get_sog_iformatio",
                            "descriptio": "根据用户提供的歌曲名称,查询歌曲相关信息,包括歌手、时长、专辑名称等。",
                            "parameters": {
                                "type": "object",
                                "properties": {
                                    "keyword": {
                                        "type": "strig",
                                        "descriptio": "歌曲名称",
                                    },
                                },
                                "required": ["keyword"],
                            }
                        }
        }
    ]

    messages = []
    messages.apped({"role": "system", "cotet": "你是一个有用的小助手,请调用下面的工具来回答用户的问题,参考工具输出进行回答。"})
    # messages.apped({"role": "user", "cotet": "鸡蛋壳属于哪种类型的垃圾?"})
    # messages.apped({"role": "user", "cotet": "爱在西元前是谁唱的,来自哪张专辑?"})
    messages.apped({"role": "user", "cotet": "歌曲《七里香》是哪个国家的,歌手是谁?"})
    result = cliet.chat.completios.create(messages=messages, model="Qwe2-0.5B-aget", tools=tools)
    prit(result)
    tool_call = result.choices[0].message.tool_calls[0].fuctio
    prit(tool_call)
    ame, argumets = tool_call.ame, jso.loads(tool_call.argumets)
    messages.apped({"role": "fuctio", "cotet": jso.dumps({"ame": ame, "argumet": argumets}, esure_ascii=False)})
    tool_result = tool_map[ame](**argumets)
    messages.apped({"role": "tool", "cotet": "工具输出结果为: " + tool_result})
    for msg i messages:
        prit('--->', msg)
    result = cliet.chat.completios.create(messages=messages, model="Qwe2-0.5B-aget")
    prit("Aswer: ", result.choices[0].message.cotet)

功能介绍

模型介绍 模型概述 我们基于 qwen2 0.5B 模型进行了微调,使其具备了 function call 功能。下面示例使用了llamafactory 运行模型来提供api进行测试 您可以通过如下g

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论