Today, I tested MiniMax-M2.7 with api key from nvidia and openai python package.
The script is one default example:
python -m pip install openai
Collecting openai
Downloading openai-2.38.0-py3-none-any.whl.metadata (31 kB)
...
Successfully installed distro-1.9.0 jiter-0.15.0 openai-2.38.0from openai import OpenAI
client = OpenAI(
base_url = "https://integrate.api.nvidia.com/v1",
api_key = "nvapi-nvidia"
)
completion = client.chat.completions.create(
model="minimaxai/minimax-m2.7",
messages=[{"role":"user","content":""}],
temperature=1,
top_p=0.95,
max_tokens=8192,
stream=False
)
print(completion.choices[0].message.content)This will show only:
python minimax_27_001.py
Hello! How can I help you today?I tested with this python script and works well:
import sys
from PyQt6.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
QHBoxLayout, QTextEdit, QLineEdit, QPushButton, QLabel)
from PyQt6.QtCore import QThread, pyqtSignal, Qt
from PyQt6.QtGui import QFont
from openai import OpenAI
# --- WORKER THREAD API ---
# Previne blocarea interfeței grafice în timpul apelului de rețea
class ApiWorker(QThread):
response_received = pyqtSignal(str)
error_occurred = pyqtSignal(str)
def __init__(self, user_message):
super().__init__()
self.user_message = user_message
def run(self):
try:
# Inițializare client OpenAI cu endpoint-ul Nvidia specificat de tine
client = OpenAI(
base_url="https://integrate.api.nvidia.com/v1",
api_key="nvapi-KEY" # nvidia api key
)
completion = client.chat.completions.create(
model="minimaxai/minimax-m2.7",
messages=[{"role": "user", "content": self.user_message}],
temperature=1,
top_p=0.95,
max_tokens=8192,
stream=False
)
# Trimite răspunsul înapoi către fereastra principală
answer = completion.choices[0].message.content
self.response_received.emit(answer)
except Exception as e:
self.error_occurred.emit(str(e))
class MiniMaxChatApp(QMainWindow):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.setWindowTitle("MiniMax M2.7 - Interactive Chat")
self.resize(600, 700)
# Widget-ul central și layout-ul principal
central_widget = QWidget()
self.setCentralWidget(central_widget)
main_layout = QVBoxLayout(central_widget)
# 1. Zona de afișare a istoricului chat-ului
self.chat_display = QTextEdit()
self.chat_display.setReadOnly(True)
self.chat_display.setFont(QFont("Segoe UI", 11))
self.chat_display.setPlaceholderText("Conversația va apărea aici...")
main_layout.addWidget(self.chat_display)
# 2. Zona de introducere text și butonul (aranjate pe orizontală)
input_layout = QHBoxLayout()
self.input_field = QLineEdit()
self.input_field.setFont(QFont("Segoe UI", 11))
self.input_field.setPlaceholderText("Scrie un mesaj sau o comandă de Windows...")
# Trimite mesajul când apeși tasta Enter
self.input_field.returnPressed.connect(self.send_message)
input_layout.addWidget(self.input_field)
self.send_button = QPushButton("Trimite")
self.send_button.setFont(QFont("Segoe UI", 11, QFont.Weight.Bold))
self.send_button.clicked.connect(self.send_message)
input_layout.addWidget(self.send_button)
main_layout.addLayout(input_layout)
# 3. Indicator de status (jos de tot)
self.status_label = QLabel("Pregătit")
self.status_label.setStyleSheet("color: gray;")
main_layout.addWidget(self.status_label)
def send_message(self):
user_text = self.input_field.text().strip()
if not user_text:
return # Nu trimite dacă e gol
# Adaugă mesajul utilizatorului în istoric și curăță câmpul de input
self.chat_display.append(f"Tu: {user_text}\n")
self.input_field.clear()
# Dezactivează butoanele în timp ce AI-ul se gândește
self.input_field.setEnabled(False)
self.send_button.setEnabled(False)
self.status_label.setText("MiniMax M2.7 gândește...")
# Pornirea Thread-ului separat pentru apelul API
self.worker = ApiWorker(user_text)
self.worker.response_received.connect(self.handle_response)
self.worker.error_occurred.connect(self.handle_error)
self.worker.finished.connect(self.cleanup_worker)
self.worker.start()
def handle_response(self, ai_response):
# Afișează răspunsul primit de la MiniMax
self.chat_display.append(f"MiniMax M2.7: {ai_response}\n")
self.chat_display.append("-" * 40 + "\n")
self.status_label.setText("Răspuns primit.")
def handle_error(self, error_msg):
# Afișează eroarea în caz că pică netul sau cheia API e greșită
self.chat_display.append(f"Eroare: {error_msg}\n")
self.status_label.setText("A apărut o eroare.")
def cleanup_worker(self):
# Reatonează butoanele după ce procesul s-a încheiat
self.input_field.setEnabled(True)
self.send_button.setEnabled(True)
self.input_field.setFocus()
if __name__ == "__main__":
app = QApplication(sys.argv)
chat_window = MiniMaxChatApp()
chat_window.show()
sys.exit(app.exec())This is the result:
