chatGPT的Function calling示例

这篇具有很好参考价值的文章主要介绍了chatGPT的Function calling示例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

import json
import os
from openai import OpenAI

client = OpenAI(
    api_key = os.getenv("OPENAI_API_KEY"),
)

# Example dummy function hard coded to return the same weather
# In production, this could be your backend API or an external API
def get_current_weather(location, unit="fahrenheit"):
    """Get the current weather in a given location"""
    if "tokyo" in location.lower():
        return json.dumps({"location": "Tokyo", "temperature": "10", "unit": unit})
    elif "san francisco" in location.lower():
        return json.dumps({"location": "San Francisco", "temperature": "72", "unit": unit})
    elif "paris" in location.lower():
        return json.dumps({"location": "Paris", "temperature": "22", "unit": unit})
    else:
        return json.dumps({"location": location, "temperature": "unknown"})
# Step 1: send the conversation and available functions to the model
messages = [{"role": "user", 
             "content": "What's the weather like in San Francisco, Tokyo, and Paris?"}]
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_current_weather",
            "description": "Get the current weather in a given location",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city and state, e.g. San Francisco, CA",
                    },
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
                },
                "required": ["location"],
            },
        },
    }
]       

response = client.chat.completions.create(
    model="gpt-3.5-turbo-1106",
    messages=messages,
    tools=tools,
    tool_choice="auto",  # auto is default, but we'll be explicit
)
response_message = response.choices[0].message
tool_calls = response_message.tool_calls
# Step 2: check if the model wanted to call a function
global second_response 
if tool_calls:
    
    # Step 3: call the function
    # Note: the JSON response may not always be valid; be sure to handle errors
    available_functions = {
        "get_current_weather": get_current_weather,
    }  # only one function in this example, but you can have multiple
    messages.append(response_message)  # extend conversation with assistant's reply
    
    # Step 4: send the info for each function call and function response to the model
    for tool_call in tool_calls:
        function_name = tool_call.function.name
        function_to_call = available_functions[function_name] # 确定要调用的函数名
        function_args = json.loads(tool_call.function.arguments) # 从llm的返回对象中,获取调用函数的参数
        function_response = function_to_call(
            location=function_args.get("location"),
            unit=function_args.get("unit"),
        )
        messages.append(
            {
                "tool_call_id": tool_call.id,
                "role": "tool",
                "name": function_name,
                "content": function_response,
            }
        )  # extend conversation with function response

    #再次调用模型,将message对象给大模型
    second_response = client.chat.completions.create(
        model="gpt-3.5-turbo-1106",
        messages=messages,
    )  # get a new response from the model where it can see the function response

查看执行结果:

second_response

ChatCompletion(id='chatcmpl-8aJh1gWOluIGMlaGqYkCrcRqCpuM9', choices=[Choice(finish_reason='stop', index=0, message=ChatCompletionMessage(content="Currently, the weather in San Francisco is 72°C, in Tokyo it's 10°C, and in Paris it's 22°C.", role='assistant', function_call=None, tool_calls=None), logprobs=None)], created=1703666199, model='gpt-3.5-turbo-1106', object='chat.completion', system_fingerprint='fp_772e8125bb', usage=CompletionUsage(completion_tokens=29, prompt_tokens=169, total_tokens=198))

返回了一堆

second_response.choices[0].message

ChatCompletionMessage(content="Currently, the weather in San Francisco is 72°C, in Tokyo it's 10°C, and in Paris it's 22°C.", role='assistant', function_call=None, tool_calls=None)

second_response.choices[0].message.role

'assistant'

second_response.choices[0].message.content

"Currently, the weather in San Francisco is 72°C, in Tokyo it's 10°C, and in Paris it's 22°C."

可看到大模型又重新组织了语言,输出给用户

chatGPT的Function calling功能允许用户通过消息和模型进行交互,并根据用户提供的函数调用来获取所需的数据或执行特定的操作。下面是一个完整的例子:

  1. 用户发送一条消息给模型,包含问题和请求的函数调用,例如:"我需要计算两个数字的和。"
  2. 自己的程序接收到消息后,解析函数调用,找到对应的函数,并执行它。在这个例子中,程序会调用一个名为 calculate_sum 的函数,计算两个数字的和。
  3. 程序获取到计算结果后,将结果返回给模型。
  4. 模型接收到结果后,使用语言模型重新组织语言,生成回复消息,并将消息返回给用户。

整个过程至少需要两次交互:

  • 第一次交互:用户向模型提问,并告知需要调用的函数,例如:"我需要计算两个数字的和。"
  • 第二次交互:模型返回给自己的代码调用的函数列表,自己的代码根据函数列表,执行对应的函数,并将结果返回给模型。

在第二次交互中,自己的代码可以根据模型返回的函数列表,选择合适的函数,并将函数所需的参数传递给它。然后再将函数执行的结果返回给模型进行处理。

总结而言,Function calling功能通过将用户的函数调用传递给模型来实现更复杂的交互和操作。自己的代码根据模型返回的函数调用列表,调用相应的函数,并将结果传递给模型,模型根据结果生成回复消息,实现了更灵活和动态的对话交互。文章来源地址https://www.toymoban.com/news/detail-763283.html

到了这里,关于chatGPT的Function calling示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 人工智能ChatGPT如何下载?

    人工智能是近年来备受关注的热门话题,其中ChatGPT更是备受瞩目。ChatGPT是一种基于人工智能技术的自然语言处理模型,它可以通过学习大量的文本数据,自主生成符合语法、通顺、流畅的文本。这项技术在人机交互、聊天机器人、文本生成等应用领域都有着广泛的应用。 如

    2024年02月08日
    浏览(52)
  • 人工智能交互革命:探索ChatGPT的无限可能 第4章 ChatGPT-智能客服

    智能客服是一种利用人工智能技术,为客户提供在线服务和支持的解决方案。它能够通过自然语言处理、机器学习等技术,识别和理解客户的问题,并提供针对性的解决方案。智能客服可以通过多种渠道提供服务,包括网站、社交媒体、短信、电话等。 智能客服的发展可以追

    2023年04月25日
    浏览(42)
  • ChatGPT:人工智能开启智能交流新篇章

    一、ChatGPT:智能交流的新里程碑 ChatGPT是OpenAI基于GPT技术的最新版本,采用深度学习模型,通过预训练和微调的方式,使其能够理解和生成自然语言,从而实现与人类更自然、流畅的对话和交流。 二、ChatGPT的技术原理与优势 基于GPT技术:GPT技术是一种基于变换器(Transform

    2024年02月15日
    浏览(47)
  • 关于ChatGPT人工智能浅谈

            现今ChatGPT已经向我们展示了其强大的数据收集分析和处理能力,这点随着其不断的学习训练会越来越强。ChatGPT这类生成式人工智能在数据收集分析和处理能力这方面远远超过人类,虽然它目前还不能完全做到按人类的方式对数据进行利用(这类生成式人工智能目前

    2024年02月05日
    浏览(35)
  • ChatGPT:人工智能交互的未来之光

    一、ChatGPT:开启自然语言交流新纪元 ChatGPT 是基于 GPT(生成式预训练)技术的最新版本,它采用深度学习模型,通过在大规模文本数据上的预训练来理解自然语言,并生成具有连贯性和合理性的回复。ChatGPT 是一种通用的人工智能模型,能够在各种领域展现出卓越的表现,如

    2024年02月16日
    浏览(35)
  • ChatGPT会被人工智能干掉吗?

    ChatGPT是美国“开放人工智能研究中心”2022年11月30日发布的聊天机器人程序,它是人工智能技术驱动的自然语言处理工具,能通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译

    2023年04月24日
    浏览(41)
  • 贝叶斯人工智能大脑与 ChatGPT

    🍉 CSDN 叶庭云 : https://yetingyun.blog.csdn.net/ 论文地址:https://arxiv.org/abs/2308.14732 这篇论文旨在研究 Chat Generative Pre-trained Transformer (ChatGPT)在贝叶斯推理情况下解决数学问题的能力。 从 Zhu, L., Gigerenzer, G. (2006). Children can solve Bayesian problems: The role of representation in mental computat

    2024年02月10日
    浏览(50)
  • ChatGPT:人工智能与人类交流的桥梁

    在人工智能的浪潮中,ChatGPT以其独特的交流能力成为了一个亮点。作为一个基于强大的GPT-4模型的聊天机器人,ChatGPT不仅仅是技术的展示,它更是人工智能与人类交流的桥梁。 ChatGPT的出现标志着人工智能在语言理解和生成方面的一次革命。它能够理解复杂的语言模式,提供

    2024年01月23日
    浏览(34)
  • ChatGPT:人工智能助手的新时代

    随着人工智能的不断发展,自然语言处理技术正逐渐成为我们与计算机交互的重要方式之一。其中,ChatGPT作为一种基于大规模预训练语言模型的对话生成系统,正引领着人工智能助手的新时代。本篇博客将介绍ChatGPT的原理、应用场景以及优势,帮助读者更好地了解和应用这

    2024年02月05日
    浏览(48)
  • ChatGPT:开启人工智能的新时代

    ChatGPT:开启人工智能新时代 随着人工智能技术的不断发展,自然语言处理成为了许多企业和研究机构关注的焦点。在此背景下,ChatGPT 技术应运而生,成为了推动自然语言处理领域发展的重要力量。 Generative Pre-trained Transformer(简称 GPT)是一种基于深度学习的神经网络模型,

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包