当前位置:   article > 正文

『亚马逊云科技产品测评』活动征文|基于python调用 Lambda 创建一个聊天机器人_亚马逊lamdba 开源

亚马逊lamdba 开源

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道

背景

之前一直使用的是 ChatGPT,没有关注过其他的模型,最近Meta开源了LLama 2模型,它已经过预训练,并使用多达700亿个参数进行了微调。擅长处理众多领域的复杂推理任务,包括编程和创意写作等专业领域。而AWS可以通过 Lambda 服务 和AWS API Gateway将Llama 2 暴露出来,通过Api的方式来进行调用。所以这次就通过python来调用接口在本地构建一个基于LLama 2的聊天机器人

准备工作
托管Llama 2模型

托管 Llama 2 的基本概要如下:
1、创建Amazon SageMaker域
2、在SageMaker Studio中搜索Llama-2-7b-chat模型
3、Deploy 模型

  • 创建域在这里插入图片描述
  • 在SageMaker Studio 中使用SageMaker JumpStart快速创建Llama-2-7b-chat
    在这里插入图片描述
  • 选择我们要发的Llama-2-7b-chat模型, 点击Deploy
    在这里插入图片描述
  • 在控制台端点中,我们可以查看创建好的端点信息
    在这里插入图片描述
通过Lambda暴露接口

Search栏输入 -> Lambda,进入Lambda控制台,点击创建函数

  • 创建函数
    在这里插入图片描述
  • 点击代码,编写代码并发布
    在这里插入图片描述
  • 添加触发器,选择API Gateway,选择创建一个新的API,点击添加
    在这里插入图片描述
  • 在函数的配置项中,点击触发器我们可以获取访问地址
    这样我们就得到了一个访问地址,可以用来调用Llama 2
    在这里插入图片描述
通过Gradio与模型进行交互

Gradio 是一个用于快速创建界面化应用程序的库,使用gradio,只需在原有的代码中增加几行,就能自动化生成交互式web页面,并支持多种输入输出格式,比如图像分类中的图>>标签,超分辨率中的图>>图等。

环境:Windows + Python3.9

1、安装Gradio

pip install gradio
  • 1

2、使用 Gradio 创建一个简单的用户界面,用户可以在文本框中输入问题,然后调用 Llama API 进行回答

import gradio as gr
import requests

# 替换为您自己的 Llama API 端点
llama_api_endpoint = "https://xxxx"

if __name__ == "__main__":

    with gr.Blocks() as demo:
        gr.Markdown("## Llama2 聊天机器人")
        with gr.Column():
            chatbot = gr.Chatbot()
            with gr.Row():
                with gr.Column():
                    message = gr.Textbox(label="Chat Message Box", placeholder="Chat Message Box", show_label=False)
                with gr.Column():
                    with gr.Row():
                        submit = gr.Button("submit")


        def respond(message, chat_history):
            json_body = {
                "inputs": [
                    [
                        {"role": "system", "content": "你现在是一个聊天机器人,根据用户的问话进行合理的回答"},
                        {"role": "user", "content": message}
                    ]
                ],
                "parameters": {"max_new_tokens": 256, "top_p": 0.9, "temperature": 0.6}
            }

            # send request to endpoint
            llm_response = requests.post(llama_api_endpoint, json=json_body).json()
            print(llm_response)

            parsed_response = llm_response[0]['generation']['content']
            chat_history.append((message, parsed_response))
            return "", chat_history
            
        submit.click(respond, [message, chatbot], [message, chatbot], queue=False)
    demo.launch(share=True)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

gr.Textbox() 是输入元素,我们可以在其中输入问题

respond 函数是用来发送请求到 Llama API,并解析 API 的响应以获取答案

最后使用launch()来启动应用,share=True可以在控制台中打印外部的访问链接地址

在浏览器输入http://127.0.0.1:7860/,就可以进行访问,访问链接,我们会看到一个聊天页面,可以尝试向 Llama 2 问些问题
在这里插入图片描述
在这里插入图片描述
测试一下效果:
在这里插入图片描述
可以看到,已经可以接受到Llama 2 的回答了。可以愉快的跟Llama 2 进行聊天了。

总结

今天介绍了如何在本地环境中使用 python调用 Llama 2接口。首先,我们需要搭建 Lambda服务暴露模型请求接口。
接下来,我们就使用 Gradio 创建一个简单的用户界面来输入问题,然后调用 Llama API 进行回答。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/477903
推荐阅读
相关标签
  

闽ICP备14008679号