from fastapi import FastAPI
from fastapi.encoders import jsonable_encoder
from fastapi.responses import JSONResponse
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.get("/helloworld")
async def helloworld():
return {"message": "Hello World"}
จากตัวอย่าง code จะเป็นการ initial FastAPI project แล้ว enable CORS สำหรับการเชื่อมต่อกับ frontend ให้เรียบร้อย และการสั่ง run จะใช้คำสั่งว่า
uvicorn guardrail:app
เป็นการสั่งให้ FastAPI ที่เราประกาศไว้ในไฟล์ app.py ทำงาน โดย server จะรันที่ port 8000 เป็น default
API ที่จะใช้งานเราจะแบ่งออกเป็น ส่วนของ User ที่ส่ง prompt เข้ามาที่ backend เพื่อทำการพูดคุยกับ AI และ ส่วนของ Admin จะเป็นคน Control prompt เหล่านั้นว่าสามารถส่งไปยัง AI ได้หรือไม่
from langchain.embeddings import OpenAIEmbeddings
api_key = 'sk-XcTnjgYVsJQMNxxxxxxxxxxxxxx'
embedding=OpenAIEmbeddings(openai_api_key=api_key)
ใช้เป็น Chatbot API
import openai
openai.api_key = api_key
def stream_chat(uuid:str,prompt: str):
result = ""
messages = add_message(uuid,'user',prompt)
for chunk in openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages,
stream=True,
):
content = chunk["choices"][0].get("delta", {}).get("content")
if content is not None:
result = result + content
yield content
add_message(uuid,'assistant',result)
def compare_similarity(query):
vectorstore = init_db()
result = vectorstore.similarity_search_with_relevance_scores(query, k=5)
score_list = []
for i in result:
score_list.append(i[-1])
try:
average = sum(score_list)/len(score_list)
return average
except:
return 0
จาก rule ที่กำหนดไว้เราได้บอกว่า Apple is a fruit และ Grape is a fruit
Case แรก เราถามไปว่า “Can i by apple macbook pro” ค่านี้ได้ถูกนำเอาไปเทียบกับ rule ในตอนแรกและถูกเจ้า Gruardrail ปัดทิ้งเพราะมันมองว่าไม่ใกล้เคียงกับ Rule ที่ Set ไว้
Case สอง เราถามไปว่า “How to made apple juice“ เมื่อ prompt นี้ได้ถูกนำไปเทียบกับ Rule แล้ว Guardrail บอกว่ามันใกล้กับ Rule ที่ Set ไว้ ดังนั้น prompt นี้สามารถเอาไปถาม chatbot ได้