> 技术文档 > 基于蓝耘MaaS平台进行api调用创建本地智能ai

基于蓝耘MaaS平台进行api调用创建本地智能ai


关于MaaS平台

MaaS 平台即 “模型即服务”(Model as a Service)平台,是一种依托云计算的人工智能服务模式。
模型即服务(MaaS)平台面向企业开发者、创业者及非技术背景用户,提供开箱即用的热门AI模型服务,支持零代码体验、API快速集成与灵活计费,降低AI应用开发门槛,加速业务创新。允许用户通过API接口或其他方式访问和使用预先训练好的机器学习模型,无需自己从头开始训练模型,使得即使没有深厚机器学习背景的用户也能享受到高水平的AI技术支持。

关于具体介绍,可以看看这里蓝耘元生代AIDC OS 文档中心,介绍的还是蛮详细的

基于蓝耘MaaS平台进行api调用创建本地智能ai
那么这个时候就有人想问,我们能通过该平台做什么呢?
对于我来说,调用api来进行本地的兴趣开发操作,下面我就教大家如果使用这个平台进行api的调用操作

调用蓝耘内api进行本地机器人的搭建操作

调用之前我们先进行平台的注册操作,输入你的正确信息就能登录到平台,开启的数据漫游了
https://cloud.lanyun.net//#/registerPage?promoterCode=0131
基于蓝耘MaaS平台进行api调用创建本地智能ai

调用api,我们需要正确的调用代码,在文档中有详细的介绍
这里我们直接使用Python进行调用操作
基于蓝耘MaaS平台进行api调用创建本地智能ai

from openai import OpenAI# 构造 clientclient = OpenAI( api_key=\"sk-xxxxxxxxxxx\", # APIKey base_url=\"https://maas-api.lanyun.net/v1\",)# 流式stream = True# 请求chat_completion = client.chat.completions.create( model=\"/maas/deepseek-ai/DeepSeek-R1\", messages=[ { \"role\": \"user\", \"content\": \"你是谁\", } ], stream=stream,)if stream: for chunk in chat_completion: # 打印思维链内容 if hasattr(chunk.choices[0].delta, \'reasoning_content\'): print(f\"{chunk.choices[0].delta.reasoning_content}\", end=\"\") # 打印模型最终返回的content if hasattr(chunk.choices[0].delta, \'content\'): if chunk.choices[0].delta.content != None and len(chunk.choices[0].delta.content) != 0: print(chunk.choices[0].delta.content, end=\"\")else: result = chat_completion.choices[0].message.content

这里我们不难发现,调用api的话我们需要改变两个变量,一个是api_key,一个是model
基于蓝耘MaaS平台进行api调用创建本地智能ai
点击模型广场,我们进行API_KEY的创建操作
基于蓝耘MaaS平台进行api调用创建本地智能ai
创建好了之后就是这个样子,我们是可以进行点击复制操作的
基于蓝耘MaaS平台进行api调用创建本地智能ai
然后将这个API KEY填写到上面调用代码的api_key里面就行了
model的话就直接选择你想带调用的模型,这里我们可以发现模型广场可以带哦用的类型还是蛮多的
model的话我们选择模型下方的名字就行了
基于蓝耘MaaS平台进行api调用创建本地智能ai
假如说我们要选择DeepSeek-R1模型的话,我们就定义model=\"/maas/deepseek-ai/DeepSeek-R1\"就行了
并且每个模型里面还有具体的模型介绍,tokens扣费啥的
基于蓝耘MaaS平台进行api调用创建本地智能ai
这个时候我就得夸夸蓝耘平台了,我们在免费资源包这里发现QwQ-32B、DeepSeek-V3、DeepSeek-R1这三种模型都有大量的tokens额度,根本用不完,而且模型都是比较新的,随便调用
基于蓝耘MaaS平台进行api调用创建本地智能ai
知道了这两个参数如何填写了,那么我们就可以开始调用了,但是在调用之前我们先在平台上使用下,感受下效果
在左侧的文本模型这里,选择最新的v3模型
基于蓝耘MaaS平台进行api调用创建本地智能ai
看起来效果还是蛮不错的
基于蓝耘MaaS平台进行api调用创建本地智能ai
我们这里还是可以进行用量统计的,以线性图展示在我们面前
基于蓝耘MaaS平台进行api调用创建本地智能ai

做一个ai对话可视化界面,和chatbox差不多的效果,能进行基本的对话就行了
基于蓝耘MaaS平台进行api调用创建本地智能ai
我们这里直接和trae进行对话,让他帮我生成效果
基于蓝耘MaaS平台进行api调用创建本地智能ai
基于蓝耘MaaS平台进行api调用创建本地智能ai
还是挺智能的
基于蓝耘MaaS平台进行api调用创建本地智能ai
基于蓝耘MaaS平台进行api调用创建本地智能ai
经过一系列的调用,最后确实能在本地进行一个ai对话机器人,这个程序的可改进点有很多,比如可以让用户和ai的对话隔开一点,并且图形化UI界面再好看点儿,加点机器人切换的功能(切换不同厂家的api)
基于蓝耘MaaS平台进行api调用创建本地智能ai
实例代码如下:

import sysfrom PyQt6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QTextEdit, QPushButton, QHBoxLayout, QLabel, QFrame, QProgressBarfrom PyQt6.QtCore import Qt, QThread, pyqtSignal, QSize, QTimerfrom PyQt6.QtGui import QClipboard, QMoviefrom openai import OpenAI class ChatWorker(QThread):    response_received = pyqtSignal(str)    reasoning_received = pyqtSignal(str)    error_occurred = pyqtSignal(str)     def __init__(self, api_key, base_url, messages):        super().__init__()        self.api_key = api_key        self.base_url = base_url        self.messages = messages     def run(self):        try:            client = OpenAI(                api_key=self.api_key,                base_url=self.base_url            )             chat_completion = client.chat.completions.create(                model=\"/maas/deepseek-ai/DeepSeek-V3\",                messages=self.messages,                stream=True            )             for chunk in chat_completion:                if hasattr(chunk.choices[0].delta, \'reasoning_content\'):                    self.reasoning_received.emit(chunk.choices[0].delta.reasoning_content)                if hasattr(chunk.choices[0].delta, \'content\'):                    if chunk.choices[0].delta.content:                        self.response_received.emit(chunk.choices[0].delta.content)         except Exception as e:            self.error_occurred.emit(str(e)) class ChatWindow(QMainWindow):    def __init__(self):        super().__init__()        self.is_sending = False        self.initUI()     def initUI(self):        self.setWindowTitle(\'AI对话界面\')        self.setGeometry(100, 100, 800, 600)         # 设置主窗口样式        self.setStyleSheet(\"\"\"            QMainWindow {                background-color: #2b2b2b;            }        \"\"\")         # 创建主窗口部件和布局        central_widget = QWidget()        self.setCentralWidget(central_widget)        main_layout = QVBoxLayout(central_widget)        main_layout.setSpacing(15)        main_layout.setContentsMargins(20, 20, 20, 20)        # 创建滚动区域用于显示对话历史        self.chat_history = QTextEdit()        self.chat_history.setReadOnly(True)        self.chat_history.setStyleSheet(\"\"\"            QTextEdit {                background-color: #363636;                border: 1px solid #404040;                border-radius: 10px;                padding: 15px;                color: #ffffff;            }        \"\"\")        main_layout.addWidget(self.chat_history, stretch=2)        # 思维链显示区域        self.reasoning_display = QTextEdit()        self.reasoning_display.setReadOnly(True)        self.reasoning_display.setStyleSheet(\"\"\"            QTextEdit {                background-color: #323232;                border: 1px solid #404040;                border-radius: 10px;                padding: 15px;                color: #b4b4b4;                font-size: 13px;            }        \"\"\")        main_layout.addWidget(self.reasoning_display, stretch=1)         # 输入区域        input_layout = QHBoxLayout()        input_layout.setSpacing(10)        self.input_field = QTextEdit()        self.input_field.setMaximumHeight(100)        self.input_field.setStyleSheet(\"\"\"            QTextEdit {                background-color: #363636;                border: 1px solid #404040;                border-radius: 8px;                padding: 8px;                color: #ffffff;            }        \"\"\")        input_layout.addWidget(self.input_field)         # 发送按钮和状态指示器布局        send_status_layout = QHBoxLayout()        send_status_layout.setSpacing(5)        # 发送按钮        self.send_button = QPushButton(\'发送\')        self.send_button.setStyleSheet(\"\"\"            QPushButton {                background-color: #4a9eff;                border: none;                border-radius: 8px;                padding: 8px 20px;                color: white;                font-weight: bold;            }            QPushButton:hover {                background-color: #3b8be6;            }            QPushButton:pressed {                background-color: #3178cc;            }            QPushButton:disabled {                background-color: #666666;            }        \"\"\")        self.send_button.clicked.connect(self.send_message)        send_status_layout.addWidget(self.send_button)        # 加载动画        self.loading_label = QLabel()        self.loading_movie = QMovie(\"loading.gif\")        self.loading_movie.setScaledSize(QSize(20, 20))        self.loading_label.setMovie(self.loading_movie)        self.loading_label.hide()        send_status_layout.addWidget(self.loading_label)        input_layout.addLayout(send_status_layout)         main_layout.addLayout(input_layout)         # OpenAI API配置        self.api_key = \"sk-3bjomhlbnrnx2utxzi7yw26i62cvnlx6bnecxv3gchq75o2y\"        self.base_url = \"https://maas-api.lanyun.net/v1\"     def send_message(self):        if self.is_sending:            return        user_message = self.input_field.toPlainText().strip()        if not user_message:            return        # 设置发送状态        self.is_sending = True        self.send_button.setEnabled(False)        self.loading_label.show()        self.loading_movie.start()         # 清空输入框和思维链显示        self.input_field.clear()        self.reasoning_display.clear()         # 显示用户消息        message_html = self.create_message_bubble(user_message, is_user=True)        cursor = self.chat_history.textCursor()        cursor.movePosition(cursor.MoveOperation.End)        cursor.insertHtml(message_html)         # 准备消息        messages = [            {                \"role\": \"user\",                \"content\": user_message            }        ]         # 创建并启动工作线程        self.worker = ChatWorker(self.api_key, self.base_url, messages)        self.worker.response_received.connect(self.handle_response)        self.worker.reasoning_received.connect(self.handle_reasoning)        self.worker.error_occurred.connect(self.handle_error)        self.worker.start()     def create_message_bubble(self, text, is_user=True):        # 创建消息容器的HTML        background_color = \'#404040\' if is_user else \'#1a5fb4\'        alignment = \'right\' if is_user else \'left\'        # 构建消息HTML        html = f\'\'\'        
           
                {text}           
        \'\'\'        # 为AI消息添加复制按钮        if not is_user:            html += f\'\'\'           
                           
            \'\'\'        html += \'
\'        return html     def handle_response(self, response):        # 如果是第一次收到响应,初始化累积变量和计时器        if not hasattr(self, \'accumulated_response\'):            self.accumulated_response = \'\'            self.response_timer = QTimer()            self.response_timer.setSingleShot(True)            self.response_timer.timeout.connect(self.display_accumulated_response)        # 累积响应内容        self.accumulated_response += response        # 重置计时器(每收到新内容就重置等待时间)        self.response_timer.start(1000)  # 1秒后如果没有新内容,则显示累积的内容    def display_accumulated_response(self):        if not self.accumulated_response.strip():            return        # 创建并插入AI回复气泡        message_html = self.create_message_bubble(self.accumulated_response, is_user=False)        cursor = self.chat_history.textCursor()        cursor.movePosition(cursor.MoveOperation.End)        cursor.insertHtml(message_html)        # 滚动到底部        self.chat_history.verticalScrollBar().setValue(            self.chat_history.verticalScrollBar().maximum()        )        # 重置累积变量和发送状态        self.accumulated_response = \'\'        self.is_sending = False        self.send_button.setEnabled(True)        self.loading_label.hide()        self.loading_movie.stop()     def handle_reasoning(self, reasoning):        self.reasoning_display.insertPlainText(reasoning)     def handle_error(self, error_message):        error_html = f\'
错误: {error_message}
\'        self.chat_history.append(error_html)        # 重置发送状态        self.is_sending = False        self.send_button.setEnabled(True)        self.loading_label.hide()        self.loading_movie.stop() def main():    app = QApplication(sys.argv)    window = ChatWindow()    window.show()    sys.exit(app.exec()) if __name__ == \'__main__\':    main()

总结

针对蓝耘的api调用操作,确实很方便,因为我们只需要改变两个变量就可以实现本地的调用操作,相较于之前使用其他平台的api,没有那么复杂的流程和文档,一眼就能看明白怎么回事,这个相应的速度也是相当的快的

用户无需深入钻研复杂的底层算法和模型细节,仅需按照 API 文档说明,进行简单的接口调用操作,就能利用平台强大的 AI 技术。

并且蓝耘平台的 API 支持多平台使用,无论是常见的 Windows、Linux、macOS 操作系统,还是移动端的 iOS 和 Android 系统,开发者都能顺利集成平台的 AI 服务

是否有我说的这么厉害呢?感兴趣的同学赶紧来试试吧

https://cloud.lanyun.net//#/registerPage?promoterCode=0131