赞
踩
文章来源
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)

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。