文章来源
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=1python -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, OpenAIErrorAPI_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.contentexcept OpenAIError as e:print(f"请求失败: {e}")return Nonewhile True:user_input = input("User: ")if user_input.lower() in ["quit", "exit", "bye"]:print("Assistant: 再见!")breakresponse = 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 -yconda activate chatttsmkdir chattts
cd chatttspip install chattts-forkchattts hello,world
7)测试chatTTS
import subprocessdef 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 shlexdef 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 ConversableAgentDarcy = 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)