LangChain ilovalaringizni joylashtirish uchun FastAPI va Deta Space-dan foydalaning
Kirish
Yaqinda menda o'zimning AI yordamchimni veb-saytimga qo'shish g'oyasi paydo bo'ldi - www.akshaymakes.com. Men u mening loyihalarim va o'zim haqidagi savollarga javob berishini va mashinani o'rganish va umuman sun'iy intellekt haqida ko'p gapirishni xohlardim. Mening veb-saytim SvelteKit-da qurilgan va men OpenAI API-dan to'g'ridan-to'g'ri old tomondan foydalanishni tanlagan bo'lardim. Ammo, men yordamchining kengaytirilishini xohlardim. Ya'ni, kelajakda mening bloglarim, loyihalarim va veb-saytimdagi boshqa materiallarni ko'rib chiqish va savollarga yaxshiroq javob berishini xohlardim. Shu maqsadda va veb-saytni sodda saqlash uchun men FastAPI-dan foydalanib, veb-saytim bilan REST API bilan integratsiyalashgan LangChain ilovasini yaratdim. Men tajriba ChatGPT ga o'xshash bo'lishini xohlardim, ya'ni u suhbat kontekstini eslab qolishi va suhbatni tabiiy ravishda davom ettirishi kerak. Men dasturni Deta Space-ga joylashtirdim, buni qilish juda oson edi. Keling, jarayonni bosqichma-bosqich ko'rsataman. Biz hozir dasturni soddalashtiramiz. Kelgusi bloglarda men chat yordamchisini siz haqingizda ko'proq bilishi uchun Weaviate yoki Pinecone kabi vektor ma'lumotlar bazalari yordamida veb-saytingizni kontekst sifatida qanday qo'shishingiz mumkinligini tushuntiraman.
Shunday qilib, ushbu qo'llanmada men sizga LangChain, FastAPI va Deta Space-dan foydalanib OpenAI natijalarini olish uchun qanday API yaratishni ko'rsataman. Boshlaylik.
Sozlanmoqda
- Yangi katalogdagi yangi Python loyihasi bilan boshlang. Bizning misolimizda loyiha katalogini
LangChainAPI.
deb ataymiz. LangChainAPI
daapp
nomli katalog va yangi.env
fayl yarating- Ilova jildida bo'sh
__init__.py
fayl va yangi "main.py
" vaconversation.py
fayl yarating. - Ushbu yangi katalogda quyidagi terminal buyrug'i bilan virtual muhitni ishga tushiring.
- Loyiha tuzilishi shunday ko'rinishga ega bo'ladi
├── app│ │ ├── __init__.py │ ├── main.py │ ├── conversation.py ├── .venv| └── .gitignore └── .env
6. Atrof muhitni faollashtiring.
- Windows uchun
venv\Scripts\activate.bat
- MacOS / Linux uchun
source venv/bin/activate
7. Bog'liqlarni o'rnating
pip install langchain fastapi "uvicorn[standard]" openai python-dotenv
8. Deta Space CLI ni o'rnating
- Windows uchun ushbu buyruqni terminalda ishga tushiring
iwr <https://deta.space/assets/space-cli.ps1> -useb | iex
- MacOS / Linux uchun ushbu buyruqni terminalda ishga tushiring
iwr <https://deta.space/assets/space-cli.ps1> -useb | iex
9. Git Repository-ni ishga tushiring va topshiring
git init git add . git commit -m "First Commit"
10. https://deta.space/signup saytida hisob yarating va sozlamalardan kirish tokenini oling. Ushbu panelga qanday kirishingiz mumkinligini bilish uchun oxirgi GIF-ga qarang.
11. CLI-da Deta Space-ga kiring. U kirish tokenini so'raydi. Uni yopishtiring.
space login
API yaratish
Ilova papkasida conversation.py
ni oching. Bu erda biz LangChain uchun mantiqni yozamiz.
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
faylida.
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
-da siz API-ga so'rov yuboradigan boshqa domenlarni qo'shishingiz mumkin.
API serverini mahalliy sifatida ishga tushiring
Terminalda terminalni mahalliy ishga tushirish uchun ushbu buyruqdan foydalaning. U localhost:8000
da boshlanadi.
uvicorn app.main:app --reload
API-ni sinab ko'rish uchun brauzeringizda localhost:8000/docs
sahifasiga o'ting. Bu Swagger Docs-ni ochishi kerak.
Siz so'rovingizni kiritishingiz va javob olayotganingizni tekshirishingiz mumkin. Bu ishlagandan so'ng, LangChain bilan o'ynang. Siz xotira, kontekst va boshqalarni qo'shishingiz mumkin. Ayni paytda Deta Space mahalliy vektor ma'lumotlar bazalarini qo'llab-quvvatlamaydi. Shunday qilib, kontekst fayllari va o'rnatishlaringizni saqlashingiz kerak bo'lsa, masofaviy vektor ma'lumotlar bazalaridan foydalanishingiz kerak bo'ladi.
Deta Space-ga joylashtiring
APIdan mamnun bo'lganingizdan so'ng, o'zgarishlarni git-ga kiriting
git add . git commit -m "API Works"
Terminalda ushbu buyruqni ishga tushirish orqali Deta Space-ni ishga tushiring:
space new
Bu loyihada yangi SpaceFile
ni yaratadi. Ushbu faylni oching va uning ustiga quyidagi matnni yozing.
# 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
Faylni saqlang va terminalda ushbu buyruqni bajaring.
space push
Bu Deta Space boshqaruv panelida API namunangizni yaratadi. Bunday holda, u "gpt_server" deb nomlanadi. Sizning holatingizda bu "LangChainAPI" bo'ladi.
Namuna sozlamalariga o'ting va "Konfiguratsiyalar" yorlig'idan OpenAI API kalitingizni qo'shing. Keyin, domenlar yorlig'iga o'ting va API-ning asosiy URL manzilini oling. Siz uni avval Swagger Docs yordamida brauzerda sinab ko'rishingiz va keyin uni ilovangizda REST API sifatida ishlatishingiz mumkin.
Want to Connect? My website LinkedIn Twitter