vLLM本地部署GLM-4-9b大模型,ChatTTS+AutoGen实现多AI对话转语音!打造AI小说智能体!AI写高考作文

文章来源

vLLM+glm-4-9b-chat+chatTTS 

视频去哪了?-创建者去哪了?-播单去哪了?-哔哩哔哩视频

1)创建虚拟环境

conda create -n myvllm python=3.9 -y
conda activate myvllm  
pip install vllm

2)去魔塔社区下载模型

git lfs install

git clone https://www.modelscope.cn/ZhipuAI/glm-4-9b-chat.git

如果一次没有成功

git lfs pull

3)用vllm以openai接口的形式运行

如果下面的命令运行失败,再执行export
export TORCH_NCCL_AVOID_RECORD_STREAMS=1


python -m vllm.entrypoints.openai.api_server --model /home/cxh/glm-4-9b-chat-GPTQ-Int4 --served-model-name glm-4-9b-chat --trust-remote-code  --api-key token-abc123 --host 0.0.0.0 --max-model-len=2048 --gpu-memory-utilization=0.9 --enforce-eager  --tensor-parallel-size 1

 4)测试成功与否

from openai import OpenAI, OpenAIError

API_BASE_URL = "http://192.168.1.108:8000/v1"
API_KEY = "token-abc123"

client = OpenAI(
    base_url=API_BASE_URL,
    api_key=API_KEY,
)

def generate_response(prompt):
    try:
        completion = client.chat.completions.create(
            model="glm-4-9b-chat",
            messages=[
                {"role": "user", "content": prompt}
            ]
        )
        return completion.choices[0].message.content
    except OpenAIError as e:
        print(f"请求失败: {e}")
        return None

while True:
    user_input = input("User: ")
    if user_input.lower() in ["quit", "exit", "bye"]:
        print("Assistant: 再见!")
        break

    response = generate_response(user_input)
    if response:
        print(f"Assistant: {response}")

5)使用pyautogen完成用glm进行高考作文编写,并用gpt3-5评审的流程

pip install pyautogen

from autogen import ConversableAgent
gpt4 = {
    "config_list": [
        {
            "model": "gpt-3.5-turbo",
            "base_url": "https://api.openai.com/v1/chat/completions",
            "api_key": "sk-",
        },
    ],
    "cache_seed": None,  # Disable caching.
}

glm = {
    "config_list": [
        {
            "model": "glm-4-9b-chat",
            "base_url": "http://192.168.1.108:8000/v1/",
            "api_key": "token-abc123",
        },
    ],
    "cache_seed": None,  # Disable caching.
}

jack = ConversableAgent(
    "Jack (glm)",
    llm_config=glm,
    #system_message="Your name is Jack and you are a comedian in a two-person comedy show.",
    system_message="你的名字叫杰克,你是一个有创意的文章作者,你的任务是根据给定的主题写一篇引人入胜、内容丰富的文章。文章应该有清晰的结构,包括引言、主体和结论。请注意以下几点: 1. 选择一个吸引读者的标题。 2. 在引言中介绍主题并引起读者的兴趣。 3. 在主体部分,提供详细的信息和解释,并使用例子和数据支持你的观点。 4. 在结论中总结主要观点,并给出一个有说服力的结束语。 5. 全文应该语言流畅,易于理解。 请根据给定的主题,写一篇 500 到 800 字的文章。",
)
emma = ConversableAgent(
    "Emma (gpt4)",
    llm_config=gpt4,
    #system_message="Your name is Emma and you are a comedian in two-person comedy show.",
    system_message="你的名字叫艾玛,你是一个严谨的文章评审员,你的任务是评估一篇文章的质量并给出建设性的反馈。请从以下几个方面对文章进行评估: 1. 主题和内容:文章是否紧扣主题,内容是否丰富和有说服力? 2. 结构和组织:文章是否有清晰的结构,包括引言、主体和结论?段落之间是否衔接流畅? 3. 语言和风格:文章是否语言流畅,易于理解?是否有语法或拼写错误? 4. 创新性和吸引力:文章是否有新颖的观点或见解?是否能吸引读者的兴趣? 请针对每个方面给出 1 到 5 分的评分,并提供具体的反馈和改进建议。最后,给出一个总分(1 到 5 分)和一个简短的总结评价。",

)

# chat_result = emma.initiate_chat(jack, message="杰克,阅读下面的材料,根据要求写作。随着互联网的普及、人工智能的应用,越来越多的问题能很快得到答案。那么,我们的问题是否会越来越少?以上材料引发了你怎样的联想和思考?请写一篇文章。要求:选准角度,确定立意,明确文体,自拟标题;不要套作,不得抄袭;不得泄露个人信息;不少于800字。", max_turns=3)
chat_result = emma.initiate_chat(jack, message="杰克,写一篇关于畅想马斯克的星舰载着多个人工智能机器人登陆火星,并为人类建造火星基地的文章", max_turns=3)


# print(chat_result.chat_history[0])
# print(chat_result.chat_history[1])

6)本地部署chatTTS(文字转语音)

conda create --name chattts -y

conda activate chattts

mkdir chattts
cd chattts

pip install chattts-fork

chattts hello,world

 7)测试chatTTS

import subprocess

def run_chattts(text):
    command = f"chattts -s 2 '{text}'"
    try:
        result = subprocess.run(command, shell=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        return result.stdout.decode('utf-8')
    except subprocess.CalledProcessError as e:
        print(f"Error: {e}")
        print(f"Output: {e.stdout.decode('utf-8')}")
        print(f"Error: {e.stderr.decode('utf-8')}")
        return None

# 测试
text = "你好 今天天气怎么样呀."
output = run_chattts(text)
if output:
    print(output)

终端调用
 

#女性
chattts -s 2 '你好 今天天气怎么样呀.'

#男性
chattts -s 3333 '你好 今天天气怎么样呀.'

8) chatTTS调用autogen的代码

##安装autogen
pip install pyautogen
import subprocess
import shlex

def run_chattts(text, output_file, speaker_index):
    # 对文本进行转义和格式化
    escaped_text = shlex.quote(text)
    
    # 根据说话者的索引选择不同的声音参数
    if speaker_index % 2 == 0:
        voice_param = "-s 2"  # 女性声音
    else:
        voice_param = "-s 666"  # 男性声音
    
    command = f"chattts {voice_param} -o {output_file} {escaped_text}"
    try:
        subprocess.run(command, shell=True, check=True)
    except subprocess.CalledProcessError as e:
        print(f"Error: {e}")
        print(f"Output: {e.stdout}")
        print(f"Error: {e.stderr}")

gpt4 = {
    "config_list": [
        {
            "model": "gpt-4",
            "base_url": "https://api.openai.com/v1",

            "api_key": "sk-",
        },
    ],
    "cache_seed": None,  # Disable caching.
}

glm = {
    "config_list": [
        {
            "model": "glm-4-9b-chat",
            "base_url": "http://192.168.1.108:8000/v1/",
            "api_key": "token-abc123",
        },
    ],
    "cache_seed": None,  # Disable caching.
}

from autogen import ConversableAgent

Darcy = ConversableAgent(
    "Darcy (glm)",
    llm_config=glm,
    system_message="你是《傲慢与偏见》中的男主角达西先生。你是一位富有、高傲但内心善良的绅士。你对伊丽莎白的智慧和独立性格印象深刻,但又常常被她的言语所挑战。请根据伊丽莎白的发言,以达西的口吻和性格进行回应。",
)
Elizabeth = ConversableAgent(
    "Elizabeth (gpt4)",
    llm_config=gpt4,
    system_message="你是《傲慢与偏见》中的女主角伊丽莎白。你是一位聪慧、独立且性格开朗的年轻女性。你对达西先生的傲慢和自负初impression不佳,但渐渐被他的真诚和善良所吸引。请根据达西先生的发言,以伊丽莎白的口吻和性格进行回应。",
)

chat_result = Elizabeth.initiate_chat(Darcy, message="达西先生,我们在上次的舞会上初次见面,我对您的第一印象是傲慢和自负。您几乎没有和任何女士跳舞,只是站在那里评判别人。我想知道,您为什么给人这样的印象?您真的如此高傲,还是有什么其他的原因?请告诉我您的想法。", max_turns=5)

# 生成音频文件
for i, message in enumerate(chat_result.chat_history):
    text = message["content"]
    output_file = f"output_{i}.wav"
    run_chattts(text, output_file, i)

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GLM-4V是一种大型模型,它的全称是Generalized Linear Model-4V。GLM-4V是一种广义线性模型,它是基于广义线性模型Generalized Linear Model, GLM)的扩展和改进。 GLM-4V的原理如下: 1. 广义线性模型GLM):GLM是一种统计模型,用于建立因变量与自变量之间的关系。它通过将线性回归模型与非线性函数相结合,可以处理不满足正态分布假设的数据。GLM的基本假设是,因变量的分布可以通过一个链接函数与自变量的线性组合相关联。 2. 四个"V":GLM-4V中的四个"V"代表了四个重要的概念,分别是Variation、Variance、Value和Validation。 - Variation(变异性):GLM-4V关注因变量的变异性,通过分析因变量的变异程度来确定模型的拟合程度。 - Variance(方差):GLM-4V考虑了因变量的方差,通过对方差进行建模,可以更好地描述因变量的分布特征。 - Value(价值):GLM-4V关注因变量的价值,通过对因变量的价值进行建模,可以更好地理解因变量对自变量的响应。 - Validation(验证):GLM-4V通过验证模型的拟合程度和预测能力,来评估模型的有效性和可靠性。 3. 模型构建:GLM-4V的模型构建包括以下几个步骤: - 数据准备:包括数据清洗、变量选择和数据换等。 - 模型选择:选择适当的链接函数和误差分布族,并确定自变量的形式。 - 参数估计:使用最大似然估计或广义最小二乘法等方法,估计模型的参数。 - 模型诊断:对模型进行诊断,检验模型的拟合程度和假设条件是否满足。 - 模型评估:通过交叉验证等方法,评估模型的预测能力和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值