نحوه ایجاد چت در آنجا با استفاده از ابر پایتون و Groq Cloud

در این مقاله ، من به شما نشان می دهم که چگونه می توانید یک دستیار مجازی را با استفاده از پایتون و Groq Cloud API بسازید. بیایید برنامه ای ایجاد کنیم که به شما امکان می دهد با مدل های پیشرفته زبان به سادگی و کارآمد تعامل داشته باشید.
گروک چیست؟
Groq شرکتی است که از طریق API خود به مدل های زبان -ART دسترسی پیدا می کند. یکی از اصلی ترین مزایای GroQ ، سرعت استنباط آن است و پاسخ های سریع تری در مقایسه با سایر راه حل های موجود در بازار ارائه می دهد.
پیش نیازهای
- پایتون 3.8+
- دانش پایه پایتون
- یک حساب Groq (برای دریافت API کلید)
- فریپی
- Uvicorn (سرویس Therg)
ساختار پروژه
├── src/
│ ├── domain/
│ │ └── ai_chat/
│ │ ├── entities/
│ │ │ └── message.py
│ │ └── use_cases/
│ │ └── process_message_use_case.py
│ └── interfaces/
│ ├── controllers/
│ │ └── ai_chat_controller.py
│ └── routes/
│ └── ai_chat_routes.py
├── config/
│ └── langchain_groq_config.py
└── requirements.txt
پیکربندی اولیه
- ابتدا یک پروژه جدید ایجاد کنید و امکانات لازم را نصب کنید:
mkdir chat
cd chat
python -m venv venv
source venv/bin/activate # No Windows use: .\venv\Scripts\activate
- امکانات لازم را نصب کنید:
pip install fastapi uvicorn langchain-groq python-dotenv pydantic
- یک فایل ایجاد کنید
requirements.txt
:
fastapi==0.109.2
uvicorn==0.27.1
pydantic>=2.7.4,<3.0.0
groq==0.4.2
python-dotenv==1.0.1
langchain==0.3.19
langchain-groq==0.2.4
- یک فایل ایجاد کنید
.env
در ریشه پروژه:
GROQ_API_KEY=sua_api_key_aqui
اجرای
1. پیکربندی مشتری Groq
ابتدا بیایید مشتری Groq را تنظیم کنیم. پرونده را ایجاد کنید config/langchain_groq_config.py
:
import os
from dotenv import load_dotenv
from langchain_groq import ChatGroq
load_dotenv()
DEFAULT_MODEL = "mixtral-8x7b-32768"
DEFAULT_ROLE = "user"
def create_groq_client() -> ChatGroq:
api_key = os.getenv("GROQ_API_KEY")
if not api_key:
raise ValueError("GROQ_API_KEY não encontrada nas variáveis de ambiente")
return ChatGroq(
groq_api_key=api_key,
model_name=DEFAULT_MODEL
)
2. تعریف موجودیت پیام
پرونده را ایجاد کنید src/domain/ai_chat/entities/message.py
:
from pydantic import BaseModel
class Message(BaseModel):
content: str
3. اجرای پرونده استفاده
پرونده را ایجاد کنید src/domain/ai_chat/use_cases/process_message_use_case.py
:
from typing import Optional
from langchain_groq import ChatGroq
from langchain.prompts import ChatPromptTemplate
from src.domain.ai_chat.entities.message import Message
from config.langchain_groq_config import create_groq_client
class ProcessMessageUseCase:
def __init__(self, groq_client: Optional[ChatGroq] = None):
self.groq_client = groq_client or create_groq_client()
async def execute(self, message: Message) -> str:
try:
messages = [
("system", "Você é um assitente pessoal chamado ZAgent"),
("human", message.content)
]
template = ChatPromptTemplate.from_messages(messages)
chain = template | self.groq_client
response = await chain.ainvoke({})
return str(response.content)
except Exception as e:
raise Exception(f"Erro ao processar mensagem: {str(e)}")
4. ایجاد کنترلر
پرونده را ایجاد کنید src/interfaces/controllers/ai_chat_controller.py
:
from fastapi import APIRouter, HTTPException
from src.domain.ai_chat.entities.message import Message
from src.domain.ai_chat.use_cases.process_message_use_case import ProcessMessageUseCase
class AIChatController:
def __init__(self):
try:
self.process_message_use_case = ProcessMessageUseCase()
self.router = APIRouter()
self._setup_routes()
except ValueError as e:
raise ValueError(f"Erro na configuração do controlador: {str(e)}")
def _setup_routes(self):
self.router.add_api_route(
"/chat",
self.chat,
methods=["POST"],
response_model=dict,
summary="Processa uma mensagem usando IA",
description="Recebe uma mensagem e retorna a resposta gerada pelo modelo de IA"
)
async def chat(self, message: Message) -> dict:
try:
response = await self.process_message_use_case.execute(message)
return {"response": response}
except ValueError as e:
raise HTTPException(status_code=400, detail=str(e))
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
5. پیکربندی مسیرها
پرونده را ایجاد کنید src/interfaces/routes/ai_chat_routes.py
:
from fastapi import APIRouter
from src.interfaces.controllers.ai_chat_controller import AIChatController
def setup_routes() -> APIRouter:
controller = AIChatController()
router = APIRouter(prefix="/api/v1", tags=["AI Chat"])
router.include_router(controller.router)
return router
6. اجرای پرونده اصلی
حال ، بیایید پرونده اصلی برنامه را ایجاد کنیم main.py
:
import sys
from fastapi import FastAPI
from src.interfaces.routes.ai_chat_routes import setup_routes
app = FastAPI(
title="Minha API FastAPI",
description="Uma API de exemplo usando FastAPI com chat IA",
version="1.0.0"
)
try:
app.include_router(setup_routes())
except ValueError as e:
print(f"Erro fatal na inicialização da aplicação: {str(e)}", file=sys.stderr)
print("Certifique-se de que a variável de ambiente GROQ_API_KEY está configurada corretamente", file=sys.stderr)
sys.exit(1)
نحوه استفاده
- متغیرهای محیط خود را پیکربندی کنید:
export GROQ_API_KEY=sua_api_key_aqui
- سرور را اجرا کنید:
uvicorn main:app --reload
- به مستندات API دسترسی پیدا کنید:
http://localhost:8000/docs
- درخواست چت کنید:
curl -X POST "http://localhost:8000/api/v1/chat" \
-H "Content-Type: application/json" \
-d '{"content": "Olá, tudo bem?"}'
ملاحظات ایمنی
- هرگز API کلید خود را به اشتراک نگذارید
- برای ذخیره اطلاعات حساس از متغیرهای محیط استفاده کنید
- اجرای محدودیت نرخ برای کنترل استفاده از API
مراحل بعدی
برخی از پیشنهادات برای گسترش پروژه:
- جلوی رابط adicionar (React ، vue.js و غیره)
- تاریخچه مکالمات پایگاه داده را پیاده سازی کنید
- پشتیبانی به مدلهای مختلف اضافه کنید
- حافظه نهان پاسخ را با Redis پیاده سازی کنید
- تست های خودکار را با Pytest اضافه کنید
- احراز هویت و مجوز را اجرا کنید
- محدودیت نرخ و وسط ایمنی را اضافه کنید
پایان
در این مقاله ، ما می آموزیم که چگونه با استفاده از API Python و Groq ، چت بسازیم. اجرای از شیوه های توسعه خوب پیروی می کند و به راحتی می توان ویژگی های بیشتری را نیز در بر گرفت.
منابع مفید