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

معرفی
اخیراً ایده ای داشتم که دستیار هوش مصنوعی خود را به وب سایت خود اضافه کنم – www.akshaymakes.com. میخواستم به سؤالات مربوط به پروژههای من و خودم پاسخ دهد و در مورد یادگیری ماشینی و به طور کلی هوش مصنوعی صحبت کنم. وب سایت من بر روی SvelteKit ساخته شده است و می توانستم از API OpenAI به طور مستقیم از قسمت جلو استفاده کنم. اما، من می خواستم دستیار مقیاس پذیر باشد. یعنی در آینده میخواستم بتواند وبلاگها، پروژهها و سایر مطالب من را در وبسایت من مرور کند و به سؤالات خیلی بهتر پاسخ دهد. بنابراین برای این منظور و برای ساده نگه داشتن وب سایت، یک برنامه LangChain با استفاده از FastAPI ایجاد کردم که با وب سایت من با REST API یکپارچه می شود. من می خواستم این تجربه شبیه به ChatGPT باشد، یعنی بتواند زمینه مکالمه را به خاطر بسپارد و به طور طبیعی مکالمه را ادامه دهد. من برنامه را در Deta Space مستقر کردم که انجام آن بسیار ساده بود. اجازه دهید شما را گام به گام در این فرآیند راهنمایی کنم. ما همین حالا برنامه را ساده نگه می داریم. در وبلاگهای آینده، توضیح خواهم داد که چگونه میتوانید وبسایت خود را با استفاده از پایگاههای داده برداری مانند Weaviate یا Pinecone به عنوان زمینه اضافه کنید تا دستیار چت در مورد شما اطلاعات بیشتری داشته باشد.
بنابراین در این آموزش به شما نشان خواهم داد که چگونه یک API برای دریافت خروجی OpenAI با استفاده از LangChain، FastAPI و Deta Space ایجاد کنید. شروع کنیم.
راه اندازی
-
با یک پروژه جدید پایتون در یک فهرست جدید شروع کنید. در مثال ما، اجازه دهید فهرست پروژه را به عنوان فراخوانی کنیم
LangChainAPI.
-
ایجاد یک دایرکتوری در
LangChainAPI
تماس گرفتapp
و فایل جدید.env
-
در داخل پوشه برنامه، یک پوشه خالی ایجاد کنید
__init__.py
فایل و جدیدmain.py
وconversation.py
فایل. -
در این دایرکتوری جدید، یک محیط مجازی را با دستور ترمینال زیر راه اندازی کنید.
python -m venv venv
-
ساختار پروژه اینگونه خواهد بود
├── app│ │ ├── __init__.py │ ├── main.py │ ├── conversation.py ├── .venv| └── .gitignore └── .env
-
محیط را فعال کنید.
برای ویندوز
venv\Scripts\activate.bat
برای MacOS/Linux
source venv/bin/activate
-
وابستگی ها را نصب کنید.
pip install langchain fastapi "uvicorn[standard]" openai python-dotenv
-
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
-
Git Repository را راه اندازی کرده و commit کنید
git init git add . git commit -m "First Commit"
-
یک حساب کاربری در https://deta.space/signup ایجاد کنید و رمز دسترسی خود را از تنظیمات دریافت کنید.
-
وارد 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 استفاده کنید.
می خواهید وصل شوید؟
🌍وب سایت من
👨لینکدین من