当前位置:   article > 正文

编写调用GPT接口的Python程序,实现本地歌曲与视频的自动播放_pythongpt免费接口代码输入

pythongpt免费接口代码输入

前提准备

1.本地歌曲、本地视频。
2.PotPlayer播放器,打开网络加速器后可在官网下载。https://potplayer.daum.net/
3.openai的api_key,可在官方网站或者某宝买一个key,并把key放入电脑环境里面。

重难点

  1. 首先需要实现播放音乐和视频,这个函数定义是一个难点;
  2. 然后调用GPT API接口需要models,messages, functions这三个参数,functions函数是第二个难点;
  3. 如何调用API接口是第三难点。

关于为何需要functions函数,通过询问GPT给出的回答是:
在这里插入图片描述

代码

实现函数

import potplayer
import difflib
import json
import glob
import openai
import subprocess
openai.api_key = os.getenv("OPENAI_API_KEY")
# 调用本地音乐播放器实现函数
def playMusic(kw):  #定义一个曲名关键字函数,需要传入的参数是曲名
    potplayer_path = '..\\PotPlayerMini64.exe'  #potplayer播放器的位置
    fs = glob.glob('..\\*.mp3')  #指定音乐文件夹里所有MP3文件列出来
    matches = difflib.get_close_matches(kw, fs, cutoff=0.01)  #根据字符串匹配找出与曲名参数最相近的文件名(即不用写出准确的文件名)
    best = matches[0]
    subprocess.call([potplayer_path, best])  #播放地址文件

# 调用本地视频播放器实现函数
def playMovie(kw):
    potplayer_path = '..\\PotPlayerMini64.exe'
    fs = glob.glob('..\\*.mp4')
    matches = difflib.get_close_matches(kw, fs, cutoff=0.01)
    best = matches[0]
    subprocess.call([potplayer_path, best])

# 这个函数接收一个包含对话消息的列表作为参数,并按照角色和内容的格式打印每条消息
def pretty_print_conversation(messages): 
    for message in messages:
        role = message["role"]
        content = message["content"]
        print(f"{role}: {content}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

描述函数

# 描述函数
# 定义两个函数并封装,一个是播放音乐的函数,一个是播放视频的函数
functions = [{"name": "playMusic",
              "description": "根据用户提供的曲名关键字播放音乐",  #描述
              #针对函数的参数进行的定义。它指定了参数的类型、属性和必需性。
              "parameters": {"type": "object",  # 参数类型为对象(object)
                             "properties": {"kw": {"type": "string","description": "曲名关键字"}},#参数包含一个属性,该属性的键是kw,值是一个字符串类型(string)。kw属性描述是曲名关键字。
                             "required": ["kw"], #kw属性是必需的,即在调用函数时必须提供该参数。
                            }  
              },
               {"name": "playMovie",
                "description": "根据用户提供的视频关键字播放视频",
                "parameters": {"type": "object",
                               "properties": {"kw": {"type": "string","description": "视频关键字"}},
                               "required": ["kw"],
                               }
               }
               ]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
'
运行

调用GPT API


# 调用GPT API来进行对话生成,并根据回复执行相应的函数
messages = []  #创建一个空的消息列表messages,需要向其中添加系统消息和用户消息
messages.append({"role": "system","content" : "Don't make assumptions about"}) #作为系统,不要臆断??
messages.append({"role": "user","content":"我想听北京东路的日子"})  #作为用户,输入需求
chat_response = openai.ChatCompletion.create(model='gpt-3.5-turbo',messages=messages,functions=functions) #使用openai.ChatCompletion.create方法调用GPT API,利用gpt3.5作为模型、消息列表和函数列表作为参数
assistant_message = chat_response["choices"][0]["message"]  #从API响应中提取回复消息
print(assistant_message)
messages.append(assistant_message) #将回复消息添加到消息列表中
#如果回复中包含函数调用信息,则提取函数名称和参数,根据函数名称调用相应的函数,传递解析后的参数
if assistant_message.get( "function_call"):
    fn = assistant_message["function_call"]["name"]
    arguments = json.loads(assistant_message["function_call"]["arguments"]) 
    if fn == "playMusic":playMusic(**arguments)
    elif fn == "playMovie":playMovie(**arguments)
pretty_print_conversation(messages)  #打印整个对话的内容
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

通过以上三部分可以基本实现本地歌曲与视频的自动播放。
也可以实现与GPT的对话,当识别到不需要调用自定义函数时,GPT会直接回答相应的问题。例如:

在这里插入图片描述

不足与改进

针对以上代码可改进的地方有:
1.多轮对话,实现连续不断的命令交互。
2.语音控制,识别人声需求回答问题。
3.制作网页,将这一实现放入自己的网页中,高级的可以自己开发网站。

本文章的撰写参考哔哩哔哩视频:

免费教程系列(一)手把手教你用GPT点歌放电影 实例讲解新特性Function Calling

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/939684
推荐阅读
相关标签
  

闽ICP备14008679号