当前位置:   article > 正文

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

vllm部署glm4

文章来源

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

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

1)创建虚拟环境

  1. conda create -n myvllm python=3.9 -y
  2. conda activate myvllm
  3. 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接口的形式运行

  1. 如果下面的命令运行失败,再执行export
  2. export TORCH_NCCL_AVOID_RECORD_STREAMS=1
  3. 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)测试成功与否

  1. from openai import OpenAI, OpenAIError
  2. API_BASE_URL = "http://192.168.1.108:8000/v1"
  3. API_KEY = "token-abc123"
  4. client = OpenAI(
  5. base_url=API_BASE_URL,
  6. api_key=API_KEY,
  7. )
  8. def generate_response(prompt):
  9. try:
  10. completion = client.chat.completions.create(
  11. model="glm-4-9b-chat",
  12. messages=[
  13. {"role": "user", "content": prompt}
  14. ]
  15. )
  16. return completion.choices[0].message.content
  17. except OpenAIError as e:
  18. print(f"请求失败: {e}")
  19. return None
  20. while True:
  21. user_input = input("User: ")
  22. if user_input.lower() in ["quit", "exit", "bye"]:
  23. print("Assistant: 再见!")
  24. break
  25. response = generate_response(user_input)
  26. if response:
  27. print(f"Assistant: {response}")

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

pip install pyautogen

  1. from autogen import ConversableAgent
  2. gpt4 = {
  3. "config_list": [
  4. {
  5. "model": "gpt-3.5-turbo",
  6. "base_url": "https://api.openai.com/v1/chat/completions",
  7. "api_key": "sk-",
  8. },
  9. ],
  10. "cache_seed": None, # Disable caching.
  11. }
  12. glm = {
  13. "config_list": [
  14. {
  15. "model": "glm-4-9b-chat",
  16. "base_url": "http://192.168.1.108:8000/v1/",
  17. "api_key": "token-abc123",
  18. },
  19. ],
  20. "cache_seed": None, # Disable caching.
  21. }
  22. jack = ConversableAgent(
  23. "Jack (glm)",
  24. llm_config=glm,
  25. #system_message="Your name is Jack and you are a comedian in a two-person comedy show.",
  26. system_message="你的名字叫杰克,你是一个有创意的文章作者,你的任务是根据给定的主题写一篇引人入胜、内容丰富的文章。文章应该有清晰的结构,包括引言、主体和结论。请注意以下几点: 1. 选择一个吸引读者的标题。 2. 在引言中介绍主题并引起读者的兴趣。 3. 在主体部分,提供详细的信息和解释,并使用例子和数据支持你的观点。 4. 在结论中总结主要观点,并给出一个有说服力的结束语。 5. 全文应该语言流畅,易于理解。 请根据给定的主题,写一篇 500 到 800 字的文章。",
  27. )
  28. emma = ConversableAgent(
  29. "Emma (gpt4)",
  30. llm_config=gpt4,
  31. #system_message="Your name is Emma and you are a comedian in two-person comedy show.",
  32. system_message="你的名字叫艾玛,你是一个严谨的文章评审员,你的任务是评估一篇文章的质量并给出建设性的反馈。请从以下几个方面对文章进行评估: 1. 主题和内容:文章是否紧扣主题,内容是否丰富和有说服力? 2. 结构和组织:文章是否有清晰的结构,包括引言、主体和结论?段落之间是否衔接流畅? 3. 语言和风格:文章是否语言流畅,易于理解?是否有语法或拼写错误? 4. 创新性和吸引力:文章是否有新颖的观点或见解?是否能吸引读者的兴趣? 请针对每个方面给出 1 到 5 分的评分,并提供具体的反馈和改进建议。最后,给出一个总分(1 到 5 分)和一个简短的总结评价。",
  33. )
  34. # chat_result = emma.initiate_chat(jack, message="杰克,阅读下面的材料,根据要求写作。随着互联网的普及、人工智能的应用,越来越多的问题能很快得到答案。那么,我们的问题是否会越来越少?以上材料引发了你怎样的联想和思考?请写一篇文章。要求:选准角度,确定立意,明确文体,自拟标题;不要套作,不得抄袭;不得泄露个人信息;不少于800字。", max_turns=3)
  35. chat_result = emma.initiate_chat(jack, message="杰克,写一篇关于畅想马斯克的星舰载着多个人工智能机器人登陆火星,并为人类建造火星基地的文章", max_turns=3)
  36. # print(chat_result.chat_history[0])
  37. # print(chat_result.chat_history[1])

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

  1. conda create --name chattts -y
  2. conda activate chattts
  3. mkdir chattts
  4. cd chattts
  5. pip install chattts-fork
  6. chattts hello,world

 7)测试chatTTS

  1. import subprocess
  2. def run_chattts(text):
  3. command = f"chattts -s 2 '{text}'"
  4. try:
  5. result = subprocess.run(command, shell=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  6. return result.stdout.decode('utf-8')
  7. except subprocess.CalledProcessError as e:
  8. print(f"Error: {e}")
  9. print(f"Output: {e.stdout.decode('utf-8')}")
  10. print(f"Error: {e.stderr.decode('utf-8')}")
  11. return None
  12. # 测试
  13. text = "你好 今天天气怎么样呀."
  14. output = run_chattts(text)
  15. if output:
  16. print(output)

终端调用
 

  1. #女性
  2. chattts -s 2 '你好 今天天气怎么样呀.'
  3. #男性
  4. chattts -s 3333 '你好 今天天气怎么样呀.'

8) chatTTS调用autogen的代码

  1. ##安装autogen
  2. pip install pyautogen
  1. import subprocess
  2. import shlex
  3. def run_chattts(text, output_file, speaker_index):
  4. # 对文本进行转义和格式化
  5. escaped_text = shlex.quote(text)
  6. # 根据说话者的索引选择不同的声音参数
  7. if speaker_index % 2 == 0:
  8. voice_param = "-s 2" # 女性声音
  9. else:
  10. voice_param = "-s 666" # 男性声音
  11. command = f"chattts {voice_param} -o {output_file} {escaped_text}"
  12. try:
  13. subprocess.run(command, shell=True, check=True)
  14. except subprocess.CalledProcessError as e:
  15. print(f"Error: {e}")
  16. print(f"Output: {e.stdout}")
  17. print(f"Error: {e.stderr}")
  18. gpt4 = {
  19. "config_list": [
  20. {
  21. "model": "gpt-4",
  22. "base_url": "https://api.openai.com/v1",
  23. "api_key": "sk-",
  24. },
  25. ],
  26. "cache_seed": None, # Disable caching.
  27. }
  28. glm = {
  29. "config_list": [
  30. {
  31. "model": "glm-4-9b-chat",
  32. "base_url": "http://192.168.1.108:8000/v1/",
  33. "api_key": "token-abc123",
  34. },
  35. ],
  36. "cache_seed": None, # Disable caching.
  37. }
  38. from autogen import ConversableAgent
  39. Darcy = ConversableAgent(
  40. "Darcy (glm)",
  41. llm_config=glm,
  42. system_message="你是《傲慢与偏见》中的男主角达西先生。你是一位富有、高傲但内心善良的绅士。你对伊丽莎白的智慧和独立性格印象深刻,但又常常被她的言语所挑战。请根据伊丽莎白的发言,以达西的口吻和性格进行回应。",
  43. )
  44. Elizabeth = ConversableAgent(
  45. "Elizabeth (gpt4)",
  46. llm_config=gpt4,
  47. system_message="你是《傲慢与偏见》中的女主角伊丽莎白。你是一位聪慧、独立且性格开朗的年轻女性。你对达西先生的傲慢和自负初impression不佳,但渐渐被他的真诚和善良所吸引。请根据达西先生的发言,以伊丽莎白的口吻和性格进行回应。",
  48. )
  49. chat_result = Elizabeth.initiate_chat(Darcy, message="达西先生,我们在上次的舞会上初次见面,我对您的第一印象是傲慢和自负。您几乎没有和任何女士跳舞,只是站在那里评判别人。我想知道,您为什么给人这样的印象?您真的如此高傲,还是有什么其他的原因?请告诉我您的想法。", max_turns=5)
  50. # 生成音频文件
  51. for i, message in enumerate(chat_result.chat_history):
  52. text = message["content"]
  53. output_file = f"output_{i}.wav"
  54. run_chattts(text, output_file, i)

 

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号