Project Icon

openai-function-calling-tools

构建OpenAI API函数调用模型的便捷工具

OpenAI Function Calling Tools 提供一系列工具,帮助开发者轻松构建与OpenAI API的函数调用模型。功能涵盖显示地图兴趣点、反向地理编码、时钟、计算器、Google和Bing自定义搜索等。支持多种环境,如Node.js、Cloudflare Workers、Vercel、Supabase,确保在生产环境中的安全可靠。

OpenAI Function Calling Tools 项目介绍

项目概述

OpenAI Function Calling Tools 是一个提供工具集的仓库,旨在帮助开发者更轻松地使用 OpenAI API 构建函数调用模型。这些工具的设计目的是让用户无需从头开始构建,可以直接初始化和使用不同的功能。

提供的工具

OpenAI Function Calling Tools 提供了一系列可即开即用的工具,以下是主要工具的介绍:

  • 🗺️ ShowPoisOnMap:可以在地图上显示兴趣点的工具。
  • 🌐 ReverseGeocode:将坐标转换为人类可读的地址。
  • Clock:一个能显示时间的时钟工具。
  • 🧮 Calculator:简单的计算器,可以进行基本算术运算,需输入数学表达式。
  • 🔍 GoogleCustomSearch:Google 自定义搜索 API 的封装器,用于回答有关当前事件的问题,输入应为搜索查询。
  • 🔍 BingCustomSearch:Bing 自定义搜索 API 的封装器,用于回答有关当前事件的问题,输入应为搜索查询。
  • 🔍 SerperCustomSearch:SerpAPI 的封装器,用于回答有关当前事件的问题,输入应为搜索查询。
  • 🏞️ SerperImagesSearch:使用 SerpAPI 搜索图像,输入应为搜索查询。
  • 📁 fs:通过 WriteFileTool 和 ReadFileTool 访问文件系统,输入应为文件路径和写入文件的文本。
  • 🪩 webbrowser:可以打开网站的网页浏览器,输入应为 URL。
  • 🚧 sql:输入为详尽且正确的 SQL 查询,输出为数据库结果。
  • 🚧 JavaScriptInterpreter:JavaScript 解释器,输入应为 JavaScript 程序字符串。

通过使用 { Tool } 工厂函数,可以创建工具实例。

快速安装

要使用这些工具,只需在项目中安装 openai-function-calling-tools

npm install openai-function-calling-tools

使用示例

示例 1: 使用函数调用计算

以下是利用 JavaScriptInterpreter 计算 0.1 + 0.2 的示例代码:

import { Configuration, OpenAIApi } from "openai";
import { createCalculator } from "openai-function-calling-tools";

const configuration = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);

// 定义计算问题
const QUESTION = "What is 100*2?";

const messages = [
  {
    role: "user",
    content: QUESTION,
  },
];

// STEP 1: 创建计算器工具
const [calculator, calculatorSchema] = createCalculator();

// STEP 2: 将工具添加到 functions 对象中
const functions = {
  calculator,
};

const getCompletion = async (messages) => {
  const response = await openai.createChatCompletion({
    model: "gpt-3.5-turbo-0613",
    messages,
    // STEP 3: 将工具方案添加到 schema 中
    functions: [calculatorSchema],
    temperature: 0,
  });

  return response;
};

console.log("Question: " + QUESTION);
let response = await getCompletion(messages);

if (response.data.choices[0].finish_reason === "function_call") {
  const fnName = response.data.choices[0].message.function_call.name;
  const args = response.data.choices[0].message.function_call.arguments;

  console.log("Function call: " + fnName);
  console.log("Arguments: " + args);

  // STEP 4: 调用函数
  const fn = functions[fnName];
  const result = fn(JSON.parse(args));

  console.log("Calling Function Result: " + result);

  messages.push({
    role: "assistant",
    content: null,
    function_call: {
      name: fnName,
      arguments: args,
    },
  });

  messages.push({
    role: "function",
    name: fnName,
    content: JSON.stringify({ result: result }),
  });

  // 再次调用完成函数
  response = await getCompletion(messages);
  console.log(response.data.choices[0].message.content);
}

示例 2: 使用 Google Custom Search 的函数调用

注意:使用此工具需要申请 Google Custom Search API 密钥和 Google Custom Search Engine ID。

const { Configuration, OpenAIApi } = require("openai");
const { createGoogleCustomSearch } = require("openai-function-calling-tools");

const main = async () => {
  const configuration = new Configuration({
    apiKey: process.env.OPENAI_API_KEY,
  });
  const openai = new OpenAIApi(configuration);

  const QUESTION = "How many tesla model 3 sale in 2022?";

  const messages = [
    {
      role: "user",
      content: QUESTION,
    },
  ];

  // STEP 1: 创建 Google Custom Search 工具
  const [googleCustomSearch, googleCustomSearchSchema] = createGoogleCustomSearch({
    apiKey: process.env.GOOGLE_API_KEY,
    googleCSEId: process.env.GOOGLE_CSE_ID,
  });

  // STEP 2: 将工具添加到 functions 对象中
  const functions = {
    googleCustomSearch,
  };

  const getCompletion = async (messages) => {
    const response = await openai.createChatCompletion({
      model: "gpt-3.5-turbo-0613",
      messages,
      // STEP 3: 将工具方案添加到 functions 参数中
      functions: [googleCustomSearchSchema],
      temperature: 0,
    });

    return response;
  };
  
  let response;

  console.log("Question: " + QUESTION);

  while (true) {
    response = await getCompletion(messages);

    if (response.data.choices[0].finish_reason === "stop") {
      console.log(response.data.choices[0].message.content);
      break;
    } else if (response.data.choices[0].finish_reason === "function_call") {
      const fnName = response.data.choices[0].message.function_call.name;
      const args = response.data.choices[0].message.function_call.arguments;

      const fn = functions[fnName];
      const result = await fn(JSON.parse(args));

      console.log(`Function call: ${fnName}, Arguments: ${args}`);
      console.log(`Calling Function ${fnName} Result: ` + result);

      messages.push({
        role: "assistant",
        content: "",
        function_call: {
          name: fnName,
          arguments: args,
        },
      });

      messages.push({
        role: "function",
        name: fnName,
        content: JSON.stringify({ result: result }),
      });
    }
  }
};

main();

支持的环境

该工具支持以下环境:

  • Node.js v16 或更高版本
  • Cloudflare Workers
  • Vercel / Next.js(后端,Serverless 和 Edge 函数)
  • Supabase Edge Functions

生产环境安全性

OpenAI Function Calling Tools 被认为是生产环境中安全的工具之一。

灵感来源

该项目受 LangChainAI 的启发而构建。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号