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

  1. Yangi katalogdagi yangi Python loyihasi bilan boshlang. Bizning misolimizda loyiha katalogini LangChainAPI. deb ataymiz.
  2. LangChainAPI da app nomli katalog va yangi .env fayl yarating
  3. Ilova jildida bo'sh __init__.py fayl va yangi "main.py" va conversation.py fayl yarating.
  4. Ushbu yangi katalogda quyidagi terminal buyrug'i bilan virtual muhitni ishga tushiring.
  5. 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