文心一言大模型-function Calling的应用

"大模型的函数调用"(Large Model Function Calling)是一个涉及到在大型人工智能模型,如 GPT-4 或类似的高级深度学习模型中使用函数调用的概念。在这种情况下,函数调用可以有两种含义:

  • 内部函数调用: 这指的是大型模型在其内部运行时执行的函数调用。这些函数调用是模型的一部分,用于处理输入,执行复杂的计算,生成预测等。这些内部函数是模型架构的一部分,对于最终用户通常是不可见的。

  • 外部API调用: 另一种情况是大型模型如 GPT-4 被设计为能够与外部系统交互,比如通过 API 调用执行某些任务。例如,一个大型模型可能被编程为在需要时调用外部数据库查询函数、调用图像处理服务或执行其他外部功能。

在第二种情况下,大型模型的函数调用通常是指模型作为其生成过程的一部分调用外部服务或功能的能力。这种能力极大地扩展了模型的用途,使其能够在生成文本、做出决策或执行任务时,集成更广泛的信息和功能。

接下来本文将做个function calling 外部API调用的demo实例,采用的大模型是文心一言

  1. 准备工作
    安装qianfan
python 复制代码
pip install qianfan

前往百度智能云官网https://console.bce.baidu.com/qianfan/chargemanage/list申请大模型app key和secret key

  1. 需求概述

实现一个旅游景点推荐以及自动下单的功能

  • 用户给大模型输入:想去北京天安门附近的10公里内的旅游景点
  • 大模型理解输入,获取关键词position:天安门,expect_distance:10000,返回需要调用的api function name:attractionRecommend
  • 用户输入:就去天坛公园吧
  • 大模型理解输入,返回需要调用的api function name:attractionReservation
  1. 代码实现
python 复制代码
import qianfan
import re

with open('prompt.txt',encoding='utf-8') as f:  
    prompt = f.read()  

def function_calling(prompt):
    print("user-prompt:"+prompt)
    model = "ERNIE-Bot"
    print('=' * 30,'大模型-',model,' 输出 ', '='*30,"\n")
    response = chat_comp.do(
            model=model, 
            messages=[{
                "role": "user",
                "content": prompt
                }],
            temperature=0.000000001,
            functions=[
                {
                    "name": "attractionRecommend",
                    "description": "景点推荐",
                    "parameters": {
                        "type": "object",
                        "properties": {
                            "location": {
                                "type": "string",
                                "description": "地址信息,包括省市、街道、门牌号等"
                                },
                            "expect_distance": {
                                "type": "int",
                                "description": "距离"
                                }
                            },
                        "required": ["location"]
                        },
                    "responses": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string",
                                "description": "商品id"
                                },
                            "price": {
                                "type": "int",
                                "description": "商品价格"
                                },
                            "food": {
                                "type": "string",
                                "description": "商品名称"
                                },
                            },
                        },
                 },
                 {
                        "name": "attractionReservation",
                        "description": "景点预约",
                        "parameters": {
                            "type": "object",
                            "properties": {
                                "id": {
                                    "type": "string",
                                    "description": "景点id"
                                    },
                                "food": {
                                    "type": "string",
                                    "description": "景点名称"
                                    },
                                },
                            "required": ["id"]
                            },
                        "responses": {
                            "type": "object",
                            "properties": {
                                "result": {
                                    "type": "string",
                                    "description": "是否预约成功"
                                    },
                                }
                            },
                   }
                 ]
            )


    print(response)
    return response
chat_comp = qianfan.ChatCompletion(ak="xxx", sk="xxx")


prompt_list = re.split(r"----", prompt)

for prompt in prompt_list:
    response = function_calling(prompt)
    #拿到response后,解析json,调用自定义的数据表api和下单api
    print("\n")
    print('=' * 30,"大模型响应结束","="*30)
相关推荐
SpikeKing14 分钟前
LLM - 使用 LLaMA-Factory 微调大模型 环境配置与训练推理 教程 (1)
人工智能·llm·大语言模型·llama·环境配置·llamafactory·训练框架
小码的头发丝、21 分钟前
Django中ListView 和 DetailView类的区别
数据库·python·django
Chef_Chen1 小时前
从0开始机器学习--Day17--神经网络反向传播作业
python·神经网络·机器学习
千澜空1 小时前
celery在django项目中实现并发任务和定时任务
python·django·celery·定时任务·异步任务
斯凯利.瑞恩2 小时前
Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户附数据代码
python·决策树·随机森林
yannan201903132 小时前
【算法】(Python)动态规划
python·算法·动态规划
蒙娜丽宁2 小时前
《Python OpenCV从菜鸟到高手》——零基础进阶,开启图像处理与计算机视觉的大门!
python·opencv·计算机视觉
光芒再现dev2 小时前
已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘
运维·python·gpt·语言模型·自然语言处理
好喜欢吃红柚子2 小时前
万字长文解读空间、通道注意力机制机制和超详细代码逐行分析(SE,CBAM,SGE,CA,ECA,TA)
人工智能·pytorch·python·计算机视觉·cnn
小馒头学python2 小时前
机器学习是什么?AIGC又是什么?机器学习与AIGC未来科技的双引擎
人工智能·python·机器学习