Model Studio cho phép các nhà phát triển xây dựng các ứng dụng AI tạo sinh bằng cách tận dụng một loạt các mô hình ngôn ngữ lớn (LLMs), chẳng hạn như dòng mô hình Qwen độc quyền của Alibaba Cloud và các mô hình bên thứ ba chất lượng cao như Baichuan LLM. Hàng loạt các công cụ sẽ được cung cấp để quá trình phát triển một ứng dụng AI trở nên dễ dàng hơn bao giờ hết.
Xem thêm Alibaba Cloud Model Studio là gì ?
Để sử dụng được các model, cần có một API Key, key này có thể lấy dễ dàng trên giao diện web, mình truy cập đường link: https://bailian.console.alibabacloud.com/ hoặc tìm kiếm Model Studio trên console của Alibaba Cloud, mọi người có thể tạo key ngay cả khi chưa kích hoạt dịch vụ, nhưng key sẽ không có hiệu lực cho đến khi dịch vụ được kích hoạt:
Mình sẽ sử dụng Gradio, một thư viện python nổi tiếng để demo nhanh chóng các mô hình máy học với giao diện web thân thiện. Mình sẽ thử một chatbot đơn giản, với Qwen SDK có hỗ trợ Streaming Output (từng phần trong phản hồi của LLM model sẽ hiển thị ngay lập tức lên màn hình, mà không phải đợi nhận hết toàn bộ phản hồi mới hiển thị).
Để bắt đầu sử dụng Qwen Python SDK và gradio, chỉ cần chạy lệnh đơn giản sau để cài đặt:
pip install dashscope
pip install gradio
dashscope cần chỉ định endpoint và api key, có nhiều cách để thiết lập API key, như tạo biến môi trường hay thêm trực tiếp vào code, nhưng mình sẽ tạo một file lưu API key chỉ định đường dẫn trong biến api_key_file_path:
from dashscope import Generation
import dashscope
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
dashscope.api_key_file_path = '/content/key.txt'
Sau khi cấu hình xong, mình có thể bắt đầu tự do thử nghiệm, với sự hỗ trợ của gradio chỉ với vài dòng code, mình đã có một webchatbot đơn giản:
from http import HTTPStatus
from dashscope import Generation
import dashscope
import gradio as gr
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
dashscope.api_key_file_path = '/content/key.txt'
def call_stream(user_input,history):
messages = [{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': user_input}]
responses = Generation.call(model="qwen-max",
messages=messages,
result_format='message', # set the result to be "message" format.
stream=True, # set streaming output
incremental_output=True # get streaming output incrementally
)
chat_response=""
for response in responses:
if response.status_code == HTTPStatus.OK:
time.sleep(0.05)
chat_response += response.output.choices[0]['message']['content']
yield chat_response
else:
print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
response.request_id, response.status_code,
response.code, response.message
))
interface = gr.ChatInterface(
fn=call_stream,
textbox=gr.Textbox(placeholder="Ask me anything"),
retry_btn=None,
)
interface.launch()
Và kết quả là:
Với cách gọi thông thường, các mô hình ngôn ngữ sẽ không lưu trữ lại lịch sử trò chuyện, nghĩa là giữa các câu không có sự tương tác, liên kết, hay sử dụng nội dung câu trước để làm bối cảnh trả lời cho câu tiếp theo. Vậy nên, có thể lập trình để thêm lịch sử các cuộc trỏ chuyện trước đó, thêm vào API để các mô hình có thể hiểu rõ hơn về bối cảnh cuộc trò chuyện đang diễn ra. Khác với đoạn code lúc đầu, chỉ gửi input là lời thoại mà user nhập vào, thì đoạn code này sẽ gửi kèm theo lịch sử các cuộc trò chuyện trước đó, bao gồm một cặp là user input và phản hổi từ model (lưu ý, phải đúng theo thứ tự này), và system role được đặt ở đầu tiên, để tránh ảnh hưởng thứ tự của các đoạn lịch sử. Code mẫu như sau:
import random
from http import HTTPStatus
from dashscope import Generation
import dashscope
import gradio as gr
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
dashscope.api_key_file_path = '/content/key.txt'
def call_with_history(user_input,history):
chat_history=[]
for chat in history:
chat_history.append({'role': 'user','content': chat[0]})
chat_history.append({'role': 'assistant','content': chat[1]})
messages = [{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': user_input}]
if len(chat_history)>0:
for record in chat_history:
messages.append(record)
messages.append({'role': 'user', 'content': user_input})
responses = Generation.call("qwen-max",
messages=messages,
result_format='message', # set the result to be "message" format.
stream=True, # set streaming output
incremental_output=True # get streaming output incrementally
)
chat_response=""
for response in responses:
if response.status_code == HTTPStatus.OK:
time.sleep(0.05)
chat_response += response.output.choices[0]['message']['content']
yield chat_response
else:
print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
response.request_id, response.status_code,
response.code, response.message
))
interface = gr.ChatInterface(
fn=call_with_history,
textbox=gr.Textbox(placeholder="Ask me anything"),
retry_btn=None,
)
interface.launch()
Và dưới đây là kết quả đạt được, có thể thấy, dù mình không nói rõ ràng, nhưng model vẫn hiểu là Viết lại một câu khác có chứa từ sky, đó là nhờ model đã biết được ngữ cảnh câu chuyện (lịch sử), biết được trước đó mình đã yêu cầu "Viết một câu với từ sky":
Có thể thấy, model studio đã cung cấp một khả năng truy cập vào những AI hiệu quả, tiên phong và sáng tạo nhất của Alibaba Cloud, với những mẩu code đơn giản trên, mình hi vọng có thể cung cấp cho mọi người một nền tảng để hiện thực hóa sự sáng tạo vô hạn của mình với những khả năng tuyệt với mà những FM trong Model Studio mang lại. Còn rất nhiều công cụ đang được phát triển, nó cho mình thấy một tiềm năng đầy hứa hẹn.
Hướng dẫn sửa lỗi BSOD tạm thời sau khi cập nhật CrowdStrike trên Windows
18 posts | 5 followers
FollowNguyen Phuc Khang - July 13, 2024
Regional Content Hub - August 29, 2024
Tran Phuc Hau - July 12, 2024
Regional Content Hub - July 25, 2024
Regional Content Hub - August 5, 2024
Regional Content Hub - May 13, 2024
18 posts | 5 followers
FollowA one-stop generative AI platform to build intelligent applications that understand your business, based on Qwen model series such as Qwen-Max and other popular models
Learn MoreEMAS HTTPDNS is a domain name resolution service for mobile clients. It features anti-hijacking, high accuracy, and low latency.
Learn MoreOpenAPI Explorer allows you to call an API through its web interface or WebCLI, and view the entire process.
Learn MoreAPI Gateway provides you with high-performance and high-availability API hosting services to deploy and release your APIs on Alibaba Cloud products.
Learn MoreMore Posts by Tran Phuc Hau