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

news/2024/12/23 13:47:01/

文章来源

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)

 


http://www.ppmy.cn/news/1472559.html

相关文章

微型无人机未来发展方向

尽管今天的纳米和微型无人机显示出比早期系统大得多的能力,但在速度、续航能力、航程和有效载荷能力方面仍然存在局限性。在任何或所有这些领域的改进将使部队能够在推进或打击之前收集更大、更详细的可操作情报。这将允许优化任务规划,并有可能减少伤亡…

代码随想录算法训练营第52天 [ 647. 回文子串 516.最长回文子序列 ]

代码随想录算法训练营第52天 [ 647. 回文子串 516.最长回文子序列 ] 一、647. 回文子串 链接: 代码随想录. 思路:看注释 做题状态:看解析后做出来了 class Solution { public:int countSubstrings(string s) {// dp[i][j] 区间[i,j]是不是回文子串vector…

Spring Boot 和 Spring Framework 的区别是什么?

SpringFramework和SpringBoot都是为了解决在Java开发过程中遇到的各种问题而出现的。了解它们之间的差异,能够更好的帮助我们使用它们。 SpringFramework SpringFramework是一个开源的Java平台,它提供了一种全面的架构和基础设施来支持Java应用程序的开…

DNS入门指南:企业DNS系统架构趋势解读

诞生于1987年的DNS是互联网和IT基础设施中发生的几乎所有事情的起点。从最初的简单域名解析到现在的智能解析、安全解析,伴随技术的变化与演进,DNS系统也在发生着诸多的变化。总体来说DNS系统的发展有着五大趋势,本文将会逐一进行解读。   …

黑盒测试用例的四种设计方法

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、输入域测试用例设计方法 输入域测试法是一种综合考虑了等价类划分、边界值分析等方法的综合…

Nginx配置达梦数据库代理及Nginx模块内容总结

Nginx 代理达梦数据库配置 叨叨达梦数据库代理Nginx模块说明stream模块main 全局块event块http块server块location块 本文参考了 https://blog.csdn.net/qq_42402854/article/details/132843413 叨叨 由于公司网络安全问题,应用服务器端开开放需要走策略申请&#…

【pytorch08】拼接与拆分

1.拼接与拆分 CatStackSplitChunk 2.Cat 有两张成绩单 [class1-4,students,scores] [class5-9,students,scores]’ 要把这两个成绩单合并在一起 如何理解该行为 注意:班级情况中 A的tensor是[4,32,8],B的tensor是[5,32,8]如果我们是在0维上进行拼接,要…

Chapter8 透明效果——Shader入门精要学习笔记

一、基本概念 在Unity中通常使用两种方法来实现透明效果 透明度测试(无法达到真正的半透明效果)透明度混合(关闭了深度写入) 透明度测试 基本原理:设置一个阈值,只要片元的透明度小于阈值,就…