【抢鲜体验】通义灵码试用体验,大模型帮你写代码

最近大模型比较火,我也想部署一下,想拥有一个属于自己的AI,于是就在modelscope上down了一份代码,并且modelscope还送了36小时服务器体验,那就开搞吧!

以下是启动大模型的代码:

from modelscope import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # the device to load the model onto

model = AutoModelForCausalLM.from_pretrained(
    "qwen/Qwen1.5-0.5B-Chat-GPTQ-Int4",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("qwen/Qwen1.5-0.5B-Chat-GPTQ-Int4")

prompt = "给我一份上海旅游的旅行计划"
messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)

generated_ids = model.generate(
    model_inputs.input_ids,
    max_new_tokens=512
)
generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]

response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)

大模型很快就给了我一份回答:

当然可以,以下是一份上海旅游的旅行计划:

第一天:早上:
- 上午7:00出发,前往上海浦东国际机场。
- 预约酒店入住。
- 全天游览外滩、南京路步行街和陆家嘴金融区。

第二天:
- 早起去外滩散步,欣赏美丽的海景。
- 参加上海博物馆,了解中国古代历史。
- 上午9:30返回酒店休息。
- 下午参观世博园,观赏世界各地的展览。

第三天:
- 早上8:00起床,前往迪士尼乐园。下午乘坐地铁前往徐家汇站下车,乘坐公交车前往外滩。
- 逛上海新天地购物区,体验上海的生活气息。
- 晚上回到酒店休息。

第四天:
- 游玩田子坊或静安寺周边的景点,感受上海的艺术氛围。
- 吃一顿上海特色美食,如小笼包、生煎等。
- 返回酒店休息。

第五天:
- 早上8:00起床,前往科技园区,参与一些高科技活动。
- 参加上海音乐节,享受音乐带来的乐趣。
- 上午10:00返回酒店休息。

第六天:
- 出发去黄浦江边,观看长江夜景,享受宁静的夜晚。
- 下午返回酒店休息。

第七天:
- 参加上海迪士尼乐园的一日游,结束这次在上海的旅行。

希望这个旅行计划能帮助你!

但是,我想要实现多轮对话,大模型的代码我又看不太懂,按照以前肯定就是去网上搜各种方案,再一个一个试,但今天我们要隆重请出今天要推荐的对象:

登场吧————通义灵码!!!

我在IDE的通义灵码插件中询问:“能否将上面这段代码,改成多轮对话的形式?”

通义灵码想了一会儿后,就开始帮我一行一行地写代码了(露出地主老财微笑脸的我)。

不到一分钟,就给我生成好了:

from modelscope import AutoModelForCausalLM, AutoTokenizer

device = "cuda"

def initialize_dialogue():
    model = AutoModelForCausalLM.from_pretrained(
        "qwen/Qwen1.5-0.5B-Chat-GPTQ-Int4",
        device_map="auto"
    )
    tokenizer = AutoTokenizer.from_pretrained("qwen/Qwen1.5-0.5B-Chat-GPTQ-Int4")
    return model, tokenizer

def generate_response(model, tokenizer, prompt, dialogue_history):
    messages = [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": prompt}
    ]
    text = tokenizer.apply_chat_template(
        messages,
        tokenize=False,
        add_generation_prompt=True
    )
    model_inputs = tokenizer([text], return_tensors="pt").to(device)

    generated_ids = model.generate(
        model_inputs.input_ids,
        max_new_tokens=512
    )
    generated_ids = [
        output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
    ]

    response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
    return response

def multi_dialogue():
    model, tokenizer = initialize_dialogue()
    dialogue_state = {"history": [], "current_round": 0}

    while True:
        print(f"\nRound {dialogue_state['current_round'] + 1}:")
        user_input = input("请输入您的问题或指令,或输入 'quit' 以结束对话:")
        
        if user_input.lower() == "quit":
            break

        dialogue_state["history"].append({"role": "user", "content": user_input})
        prompt = "".join([message["content"] for message in dialogue_state["history"]])
        response = generate_response(model, tokenizer, prompt, dialogue_state["history"])
        dialogue_state["history"].append({"role": "system", "content": response})
        dialogue_state["current_round"] += 1

        print(f"助手回复:{response}")

if __name__ == "__main__":
    multi_dialogue()

真强!能抵得上一个初级程序员了!后续我还会继续使用,分享更多使用案例!

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值