برنامه نویسی

نحوه استقرار برنامه LangChain 🐦👇 به عنوان یک API

معرفی

اخیراً ایده ای داشتم که دستیار هوش مصنوعی خود را به وب سایت خود اضافه کنم – www.akshaymakes.com. می‌خواستم به سؤالات مربوط به پروژه‌های من و خودم پاسخ دهد و در مورد یادگیری ماشینی و به طور کلی هوش مصنوعی صحبت کنم. وب سایت من بر روی SvelteKit ساخته شده است و می توانستم از API OpenAI به طور مستقیم از قسمت جلو استفاده کنم. اما، من می خواستم دستیار مقیاس پذیر باشد. یعنی در آینده می‌خواستم بتواند وبلاگ‌ها، پروژه‌ها و سایر مطالب من را در وب‌سایت من مرور کند و به سؤالات خیلی بهتر پاسخ دهد. بنابراین برای این منظور و برای ساده نگه داشتن وب سایت، یک برنامه LangChain با استفاده از FastAPI ایجاد کردم که با وب سایت من با REST API یکپارچه می شود. من می خواستم این تجربه شبیه به ChatGPT باشد، یعنی بتواند زمینه مکالمه را به خاطر بسپارد و به طور طبیعی مکالمه را ادامه دهد. من برنامه را در Deta Space مستقر کردم که انجام آن بسیار ساده بود. اجازه دهید شما را گام به گام در این فرآیند راهنمایی کنم. ما همین حالا برنامه را ساده نگه می داریم. در وبلاگ‌های آینده، توضیح خواهم داد که چگونه می‌توانید وب‌سایت خود را با استفاده از پایگاه‌های داده برداری مانند Weaviate یا Pinecone به عنوان زمینه اضافه کنید تا دستیار چت در مورد شما اطلاعات بیشتری داشته باشد.

بنابراین در این آموزش به شما نشان خواهم داد که چگونه یک API برای دریافت خروجی OpenAI با استفاده از LangChain، FastAPI و Deta Space ایجاد کنید. شروع کنیم.

راه اندازی

  1. با یک پروژه جدید پایتون در یک فهرست جدید شروع کنید. در مثال ما، اجازه دهید فهرست پروژه را به عنوان فراخوانی کنیم LangChainAPI.

  2. ایجاد یک دایرکتوری در LangChainAPI تماس گرفت app و فایل جدید .env

  3. در داخل پوشه برنامه، یک پوشه خالی ایجاد کنید __init__.py فایل و جدید main.py و conversation.py فایل.

  4. در این دایرکتوری جدید، یک محیط مجازی را با دستور ترمینال زیر راه اندازی کنید.

    python -m venv venv
    
  5. ساختار پروژه اینگونه خواهد بود

    
    ├── app│ 
    │   ├── __init__.py
    │   ├── main.py
    │   ├── conversation.py
    ├── .venv| 
    └── .gitignore
    └── .env
    
    
  6. محیط را فعال کنید.

    برای ویندوز

    venv\Scripts\activate.bat
    

    برای MacOS/Linux

    source venv/bin/activate
    
  7. وابستگی ها را نصب کنید.

    pip install langchain fastapi "uvicorn[standard]" openai python-dotenv
    
  8. Deta Space CLI را نصب کنید

    برای ویندوز

    iwr <https://deta.space/assets/space-cli.ps1> -useb | iex
    

    برای MacOS/Linux

    iwr <https://deta.space/assets/space-cli.ps1> -useb | iex
    
  9. Git Repository را راه اندازی کرده و commit کنید

    git init
    git add .
    git commit -m "First Commit"
    
  10. یک حساب کاربری در https://deta.space/signup ایجاد کنید و رمز دسترسی خود را از تنظیمات دریافت کنید.

    نشانه دسترسی

  11. وارد Deta Space در CLI شوید. رمز دسترسی را می خواهد. آن را بچسبانید.

    space login
    

این همه برای راه اندازی است. حالا اجازه دهید API را ایجاد کنیم.

ایجاد API

در پوشه برنامه باز کنید conversation.py. اینجاست که منطق LangChain را می نویسیم.

    from langchain import OpenAI, ConversationChain, LLMChain, PromptTemplate

    load_dotenv()

    def conversation(human_input):
        template = """Assistant is a large language model trained by  OpenAI.

        Assistant is designed to be able to assist with a wide range of tasks, from answering simple questions to providing in-depth explanations and discussions on a wide range of topics. As a language model, Assistant is able to generate human-like text based on the input it receives, allowing it to engage in natural-sounding conversations and provide responses that are coherent and relevant to the topic at hand.

        Assistant is constantly learning and improving, and its capabilities are constantly evolving. It is able to process and understand large amounts of text, and can use this knowledge to provide accurate and informative responses to a wide range of questions. Additionally, Assistant is able to generate its own text based on the input it receives, allowing it to engage in discussions and provide explanations and descriptions on a wide range of topics.

        Overall, Assistant is a powerful tool that can help with a wide range of tasks and provide valuable insights and information on a wide range of topics. Whether you need help with a specific question or just want to have a conversation about a particular topic, Assistant is here to assist.

        {history}
        Human: {human_input}
        Assistant:"""

        prompt = PromptTemplate(
            input_variables=["history", "human_input"],
            template=template
        )

        chatgpt_chain = LLMChain(
            llm=OpenAI(temperature=0),
            prompt=prompt,
            verbose=True,
        )

        output = chatgpt_chain.predict(human_input=human_input)
        return output


وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در main.py فایل.

from fastapi import FastAPI
from langcorn import create_service
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
from app.conversation import conversation

class Input(BaseModel):
    human_input: str

class Output(BaseModel):
    output: str

app=FastAPI()

@app.post("/conversation")
async def input(input: Input):
    output = Output(output=conversation(input.human_input))
    return output

origins = [
    "<http://localhost>",
    "<http://localhost:5173>",
        "...Your Domains..."
]

app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در origins می توانید دامنه های دیگری را که درخواست می کنند به api خود اضافه کنید.

سرور API را به صورت محلی اجرا کنید

در ترمینال از این دستور برای راه اندازی ترمینال به صورت محلی استفاده کنید. شروع خواهد شد localhost:8000.

uvicorn app.main:app --reload
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای تست API خود، به localhost:8000/docs در مرورگر شما این باید Swagger Docs را باز کند.

فحش دادن

می توانید درخواست خود را وارد کنید و بررسی کنید که آیا پاسخ را دریافت می کنید. هنگامی که این کار انجام شد، با خیال راحت با LangChain بازی کنید. می توانید حافظه، زمینه و غیره را اضافه کنید. در حال حاضر، Deta Space از پایگاه داده برداری محلی پشتیبانی نمی کند. بنابراین اگر نیاز به ذخیره فایل‌های زمینه و جاسازی‌های خود دارید، باید از پایگاه‌های داده برداری از راه دور استفاده کنید.

مستقر در Deta Space

هنگامی که از API راضی هستید، تغییرات را در git انجام دهید

git add .
git commit -m "API Works"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

راه اندازی Deta Space:

space new
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این یک جدید ایجاد می کند SpaceFile در پروژه این فایل را باز کنید و آن را بسازید و روی آن بنویسید.

# Spacefile Docs: <https://go.deta.dev/docs/spacefile/v0>
v: 0
micros:
  - name: LangChainAPI
    src: ./
    engine: python3.9
    primary: true
    run: uvicorn app.main:app
    presets: 
      env: 
        - name: OPENAI_API_KEY
          description: Secret message only available to this Micro
          default: "OpenAPI Key"
      api_keys: true
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

فایل را ذخیره کنید و این دستور را در ترمینال اجرا کنید.

space push
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این یک نمونه از API شما را در داشبورد Deta Space ایجاد می کند. در این مورد، “gpt_server” نامیده می شود. در مورد شما، “LangChainAPI” خواهد بود.

به تنظیمات نمونه بروید و کلید OpenAI API خود را از برگه “Configurations” اضافه کنید. سپس، به تب domains بروید و URL پایه API خود را دریافت کنید. می توانید ابتدا با استفاده از Swagger Docs آن را در مرورگر آزمایش کنید و سپس از آن در برنامه خود به عنوان REST API استفاده کنید.

نمایش داده ها


می خواهید وصل شوید؟

🌍وب سایت من

🐦توییتر من

👨لینکدین من

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا