示例:智能播客 🎙#

描述

🎙️AI播客 - 在M2 Max芯片上进行多智能体语音对话

支持语言

英文对应代码文件:AI_Podcast.py

中文对应代码文件:AI_Podcast_ZH.py

英文版本涉及技术:

关于演示功能的详细说明

  1. 启动 XInference, 部署 Wizardlm 模型和 Vicuna 模型。通过为两个模型指定名称并告诉它们有一个名为“username”的人类用户来启动聊天室,其中“username”是由用户输入提供的。然后为聊天室初始化一个空的聊天历史。

  2. 使用音频设备将录音存储到文件中,然后使用OpenAI的Whisper将文件转录为人类可读的文本字符串。

  3. 基于输入的消息字符串,确定用户想要与哪些代理(模型)进行对话。调用这些目标代理并将用户输入字符串和聊天历史作为输入让模型去生成对应的内容。

  4. 当模型的输出准备好时,使用MacOS的“Say”命令通过扬声器生成音频。每个代理在说话时都有自己的声音。

  5. 将用户输入和代理响应存储到聊天历史中,并循环递归程序,直到用户明确在其响应中说出“再见”之类的话语。

Xinference的突出特性

  1. 借助 Xinference 的分布式系统,我们可以轻松在同一会话和同一“聊天室”中部署两个不同的模型。在足够的资源情况下,该框架可以同时部署任意数量的模型。

  2. 使用 Xinference,只需添加几行代码就可以轻松部署模型。例如,在演示中启动vicuna模型,只需:

    args = parser.parse_args()
    endpoint = args.endpoint
    client = Client(endpoint)
    
    model_a = "vicuna-v1.3"
    model_a_uid = client.launch_model(
        model_name=model_a,
        model_format="ggmlv3",
        model_size_in_billions=7,
        quantization="q4_0",
        n_ctx=2048,
    )
    model_a_ref = client.get_model(model_a_uid)
    

    然后,Xinference 客户端将处理“目标模型的下载和缓存”、“为模型设置环境和进程”以及“在选择的端点运行服务”。你现在已经准备好与你的 llm 模型交互。

原始演示视频

源代码