prompt设计之调用qwem,internlm,chatglm等模型代码方法(anaconda)

436 阅读3分钟

利用模型进行prompt设计主要思路是通过魔搭社区对应模型访问,实现本地设计prompt的功能,实现效果展示:

internlm模型:

internlm本地访问

chatglm模型:

chatglm本地访问

qwen模型:

qwen本地访问

以internlm模型为例进行本地api调用,其他模型类似

internlm大模型基本知识

InternLM 是一个开源的轻量级训练框架,旨在支持大模型训练而无需大量的依赖。通过单一的代码库,它支持在拥有数千个 GPU 的大型集群上进行预训练,并在单个 GPU 上进行微调,同时实现了卓越的性能优化。在1024个 GPU 上训练时,InternLM 可以实现近90%的加速效率。

主要思路是通过魔搭社区对应模型访问,实现本地设计prompt的功能,实现效果展示:

添加图片注释,不超过 140 字(可选)

利用魔搭社区现有的交互界面

打开浏览器搜索魔搭社区或者利用网址modelscope.cn/search?sear…

添加图片注释,不超过 140 字(可选)

进入交互界面后的图形如下:

添加图片注释,不超过 140 字(可选)

在这里你可以实现和模型在线聊天功能,如果要实现代码功能需要点击红色框框部分use via api

添加图片注释,不超过 140 字(可选)

这样就能得到api的调用地址modelscope.cn/api/v1/stud…

通过anaconda实现本地访问大模型

安装python相关库

在anaconda prompt里面执行以下命令: pip install gradio_client

安装执行时所需依赖

建议先创建python虚拟环境,创建和运行:

conda create -n xx python ==3.11 #创建python虚拟环境xx,python版本设置为3.11
conda activate xx    # 激活python虚拟环境xx

在anaconda的jupyter实现代码

需要新建gradio_client.ipynb(对名字可能有严格要求)的源文件,然后在jupyter里面打开该文件

添加图片注释,不超过 140 字(可选)

导入所用依赖

from gradio_client import Client

import json

函数初始化

定义一个名字为call_internlm_chat7b函数,用来完成模型的调用,模型输入为input_,输出为模型对于输入的输出

def call_internlm_chat7b(input_):
    """
    input_: 当前输入
    return: 当前输出
    """
    client = Client("https://modelscope.cn/api/vl/studio/AI-ModelScope/Internlm-chat-7b/gradio/")
    result = client.predict(input_,fn_index=0)
    with open(result[1],'r',encoding='utf-8') as f:
        data = json.load(f)
    return data[-1][-1]  # 返回data变量的最后一个元素的最后一个元素

初步体验

call_internlm_chat7b('你好')

添加图片注释,不超过 140 字(可选)

这样你就可以设计属于自己的prompt了

internlm完整代码如下:

from gradio_client import Client
import json
def call_internlm_chat7b(input_):
    """
    input_: 当前输入
    return: 当前输出
    """
    client = Client("https://modelscope.cn/api/v1/studio/AI-ModelScope/Internlm-chat-7b/gradio/")
    result = client.predict(input_, fn_index=0)
    with open(result[1], 'r', encoding='utf-8') as f:
        data = json.load(f)
    return data[-1][-1]

# 使用函数与ChatGLM6B模型进行交互
response = call_internlm_chat7b("你好")
print(response)

chatglm模型代码:

from gradio_client import Client
import json

def chat_with_chatglm6b(input_text):
    # 创建Gradio客户端
    client = Client("https://modelscope.cn/api/v1/studio/AI-ModelScope/ChatGLM6B-unofficial/gradio/")
    
    # 使用Gradio客户端与ChatGLM6B模型进行交互
    result = client.predict(input_text, None, fn_index=0)
    
    # 获取模型的响应
    file_path = result[1]
    with open(file_path, 'r', encoding='utf-8') as file:
        data = json.load(file)
    
    # 提取需要的信息
    output = data[-1][-1]
    
    return output

# 使用函数与ChatGLM6B模型进行交互
response = chat_with_chatglm6b("你好")
print(response)

qwen模型代码:

from gradio_client import Client
import json
def chat_with_qwen_14b(input_text):
    # 创建Gradio客户端
    client = Client("https://modelscope.cn/api/v1/studio/qwen/Qwen-14B-Chat-Demo/gradio/")
    
    # 使用Gradio客户端与Qwen-14B-Chat-Demo模型进行交互,将 JSON 文件路径设为 None
    result = client.predict(input_text, None, fn_index=0)
    
    # 获取模型的响应
    file_path = result[1]
    with open(file_path, 'r', encoding='utf-8') as file:
        data = json.load(file)
    
    # 提取需要的信息
    output = data[-1][-1]
    
    return output


# 使用函数与Qwen-14B-Chat-Demo模型进行交互
response = chat_with_qwen_14b("你好")
print(response)

本文只部署了三种模型的api,其他模型可以参考本文完成api调用