根据《福布斯》的报道,AI市场预计到2030年将达到1811.8亿美元。引入OpenAI API模型,如Davinci、GPT Turbo、GPT Turbo 3.5或GPT 4,已经在人工智能领域引起了轰动。OpenAI API模型的引入,如Davinci、GPT Turbo、GPT Turbo 3.5或GPT 4,已经在人工智能领域引起了轰动。
随着OpenAI API语言模型的出现,AI领域发生了变化,这些模型具有许多功能,但在数据提取方面存在一些限制。工程师们通过函数调用来克服这一限制,简化他们的工作。由于其先进的功能,OpenAI函数调用在开发人员和工程师中迅速流行起来。
Open AI函数调用的需求
在技术中心的领域中,Open AI语言模型以其聊天式和文本生成模型主导了所有机器学习模型。
传统上,工程师们在Open AI API中使用提示工程来获取适当的响应,并使用正则表达式(RegEx)来处理非结构化数据。尽管正则表达式是有效的,但开发人员必须使用耗时的复杂提示来获得期望的结果。
OpenAI函数调用于2023年6月推出,有助于解决这个问题。它使OpenAI API更加友好,减少了对正则表达式的需求。GPT Turbo 3.5和GPT 4模型巧妙地使用函数调用作为扩展支持,其作为提取结构化数据的蓝图。
探索Open AI函数调用
函数调用是充分利用GPT模型能力以及使聊天完成API更高效的可靠方法。OpenAI函数调用将用户定义的函数作为输入,并生成比正则表达式更加结构化的输出。开发人员习惯于使用预定义的数据结构和类型。GPT 3.5和GPT 4模型的输出现在是规范和有组织的,带有用户定义的输入,使开发人员的数据提取过程更加顺利。使用OpenAI函数调用的一些优点包括:
- 增强的结果:借助结构化数据的帮助,这个函数将自然语言转换为API调用和数据库查询,以获得更好的结果。
- 定制化:由于引入了用户定义的函数,开发人员可以根据需要定制函数用于提取数据,和正则表达式不同,开发人员对函数有控制权。
- 数据提取:开发人员可以轻松地使用OpenAI函数调用来提取复杂数据,因为他们习惯于使用预定义的数据结构和类型。
上手
开发人员应该了解ChatGPT对人们对AI的强大理解产生了深远的影响。由于其巨大的受欢迎程度,许多人想要了解它的逻辑。作为初学者,以下是一些可信资源,可帮助您开始使用OpenAI:
Python教程:通过正确的Python编程入门,您可以快速学习并取得成果。
- 使用Python入门指南
- Python数据科学教程
- 阅读Python入门指南中的编码。
网络研讨会:互联网上有多个关于Python和Open AI的优秀视频。
可以通过构建一个免费的Python聊天机器人来学习Python API。
在没有函数调用时使用OpenAI
要了解OpenAI函数调用带来的灵活性,我们需要了解GPT 3.5 Turbo模型API在没有函数调用的情况下如何检查输出是否一致。首先,生成您的OpenAI秘钥以便访问网站上的所有工具。
前往OpenAI网站 > 创建账户 > 验证您的账户 > 进入您的账户并管理API密钥 > 创建密钥。
要在不调用函数的情况下使用OpenAI,让我们以在Google Colab笔记本中创建一个新笔记本为例进行测试:
- 在Google Colab笔记本的单元格中安装OpenAI。
pip install openai#import csv
- 为学生编写一段描述。
- student_one = “Rakesh是一名就读于印度马德拉斯理工学院的神经科学专业的大二学生。他的绩点为8。Rakesh以其生物技术技能而闻名,并且是该大学神经俱乐部的成员。”
- 让我们在下一个单元格中编写一个。
prompt = f'''从提供的文本中提取以下信息并将其作为JSON返回:姓名、专业、学院、成绩、俱乐部。要从以下文本中提取信息:{student_one}'''#import csv
- 现在,让我们编写API程序以从提示获取响应。
import openai import jsonopenai_response = openai.ChatCompletion.create( model = 'gpt-3.5-turbo', messages = [{'role': 'user', 'content': prompt}])answer = openai_response['choices'][0]['message']['content']answer_json = json.loads(answer)answer_json#import csv
- 它将给我们以下输出:{‘name’: ‘Rakesh,’ ‘major’: ‘神经科学,’ ‘college’: ‘印度马德拉斯理工学院,’ ‘grade’: ‘8’, ‘club’: ‘神经俱乐部’}
使用OpenAI进行函数调用
现在,我们可以编写适合我们需求的函数,以便使用OpenAI函数调用获得准确的结果。它改进了开发人员使用API的过程。下面是提取学生信息并编写OpenAI自定义函数的正确语法示例:
function_one = [ { 'name': 'info_of_student', 'description': '从文本中获取学生信息', 'parameters': { 'type': 'object', 'properties': { 'name': { 'type': 'string', 'description': '学生姓名' }, 'major': { 'type': 'string', 'description': '专业科目' }, 'school': { 'type': 'string', 'description': '大学名称' }, 'grades': { 'type': 'integer', 'description': '学生的绩点' }, 'club': { 'type': 'string', 'description': '学生加入的俱乐部' }}}}]#import csv
太棒了!您成功地使用OpenAI函数调用创建了您的第一个自定义函数。
应用OpenAI函数调用
构建函数后,您可以使用Python和OpenAI库实现和编写函数,通过创建用于数据提取的提示。例如,
- 根据您的喜好为新学生创建信息。
- 使用此代码实现函数调用。
student_info = [student_one, student_two]for stu in student_info: response = openai.ChatCompletion.create( model = 'gpt-3.5-turbo', messages = [{'role': 'user', 'content': stu}], functions = function_one, function_call = 'auto' ) response = json.loads(response['choices'][0]['message']['function_call']['arguments']) print(response)#import csv
- 下面可以看到,使用OpenAI函数调用给出了更好的响应,并且对于更多的重要数据学生来说非常容易使用。
没有使用API函数的代码对于较少数量的学生运行良好,如上所示,但是使用OpenAI函数调用对于更大数量的数据效果更好,如上所示。
使用OpenAI函数调用的多个自定义函数
您可以使用多个自定义函数充分利用GPT模型的能力。现在,让我们尝试为学生的大学信息使用各种函数的另一个示例:
- 创建一个描述并编写输入大学信息的函数。
function_two = [{ 'name': 'info_of_college', 'description': '从文本中获取大学信息', 'parameters': { 'type': 'object', 'properties': { 'name': { 'type': 'string', 'description': '大学的名称。' }, 'country': { 'type': 'string', 'description': '大学所在国家。' }, 'no_of_students': { 'type': 'integer', 'description': '学校的学生人数。' } } }} ]#import csv
- 现在,使用GPT生成大学信息,并将其存储在
#import csvfunctions = [function_one[0], function_two[0]]info = [student_one, college_one]for n in info: response = openai.ChatCompletion.create( model = 'gpt-3.5-turbo', messages = [{'role': 'user', 'content': n}], functions = functions, function_call = 'auto' ) response = json.loads(response['choices'][0]['message']['function_call']['arguments']) print(response)
- 多个函数简化开发人员的工作流程。
构建应用程序
可以使用多个函数来开发整个应用程序。使用OpenAI函数调用的GPT模型的强大功能是无限的,可以通过使用各种不同的函数调用来创建具有更多广泛数据的大型应用程序。让我们逐步插入不同的输入数据来创建应用程序:
- 首先,让我们编写两个用于提取信息的Python函数。
def student_info(name, major, school, cgpa, club): return f"{name}是{school}的{major}学生,CGPA为{cgpa}。{club}成员。"def school_info(name, country, num_students): return f"{name}位于{country},有{num_students}名学生。"#import csv
- 然后,创建student_one、random_prompt和college_one的列表。然后,使用列表中的文本生成响应,并通过应用参数来检测函数调用,打印出所有三个样本的输出。
info = [ student_one, "巴黎在哪里?", college_one]for i, sample in enumerate(info): response = openai.ChatCompletion.create( model = 'gpt-3.5-turbo', messages = [{'role': 'user', 'content': sample}], functions = [function_one[0], function_two[0]], function_call = 'auto' ) response = response["choices"][0]["message"] if response.get('function_call'): function_used = response['function_call']['name'] function_args = json.loads(response['function_call']['arguments']) available_functions = { "info_of_college": get_college, "info_of_student": get_student } fuction_to_use = available_functions[function_used] response = fuction_to_use(*list(function_args .values())) else: response = response['content'] print(f"\nans#{i+1}\n") print(response)#import csv
- 哇!使用多个函数在OpenAI上创建了一个应用程序,并根据提示进行了回答。
结论
从创建多个函数到使用自定义函数构建应用程序,OpenAI函数调用等新工具赋予开发人员更多的力量,以创新的愿景为代码注入生命,并通过函数调用提升基于OpenAI的项目。未来版本的API和语言模型不断努力增长和增强功能,将带来愉快的惊喜。