当前位置: 首页 > wzjs >正文

不同类型网站栏目设置区别西部数码网站管理助手 ftp密码

不同类型网站栏目设置区别,西部数码网站管理助手 ftp密码,做网站优化多少钱,手机公司网站建设比较好的用FastAPI创建一个输入提示词和所使用的LLM名称和向量搜索方式的API,返回LLM输出文本,其中用到OpenAI GPT 4o3和AWS Bedrock上的多个LLM模型的API,通过内部的类配置使用的模型和向量数据搜索类型,向量数据搜索类型包括faiss向量数…

用FastAPI创建一个输入提示词和所使用的LLM名称和向量搜索方式的API,返回LLM输出文本,其中用到OpenAI GPT 4o3和AWS Bedrock上的多个LLM模型的API,通过内部的类配置使用的模型和向量数据搜索类型,向量数据搜索类型包括faiss向量数据库和AWS Kendra向量数据库搜索服务,这样的逻辑用设计模式中的工厂模式实现,用Python实现Docker打包项目Python代码并在AWS ECR上注册,在AWS ECS容器中运行,已注册则直接使用现有的。

使用工厂模式实现LLM和向量搜索的灵活切换。以下是实现步骤:

  1. 修改后的项目结构:
fastapi-on-ecs/
├─ app/
│  ├─ src/
│  │  ├─ factories.py
│  │  ├─ llms/
│  │  │  ├─ base.py
│  │  │  ├─ openai.py
│  │  │  ├─ bedrock.py
│  │  ├─ vector_db/
│  │  │  ├─ base.py
│  │  │  ├─ faiss.py
│  │  │  ├─ kendra.py
│  ├─ main.py
│  ├─ Dockerfile
│  ├─ deploy.sh
│  ├─ requirements.txt
  1. 修改后的main.py:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from src.factories import LLMFactory, VectorSearchFactoryapp = FastAPI()class InferenceRequest(BaseModel):prompt: strllm_name: strvector_search_type: str@app.post("/generate")
async def generate_text(request: InferenceRequest):try:# 向量搜索vector_search = VectorSearchFactory.create(request.vector_search_type)context = vector_search.search(request.prompt)# LLM推理llm = LLMFactory.create(request.llm_name)response = llm.generate(f"Context: {context}\nPrompt: {request.prompt}")return {"response": response}except ValueError as e:raise HTTPException(status_code=400, detail=str(e))except Exception as e:raise HTTPException(status_code=500, detail=str(e))@app.get("/models")
async def list_models():return {"llm_models": LLMFactory.list_models(),"vector_dbs": VectorSearchFactory.list_vector_dbs()}@app.get("/")
def root():return {"message": "Welcome to LLM Inference API"}
  1. 工厂实现 (src/factories.py):
from typing import Dict, Type
from src.llms.base import BaseLLM
from src.llms.openai import OpenAIGPT
from src.llms.bedrock import BedrockLLM
from src.vector_db.base import BaseVectorDB
from src.vector_db.faiss import FAISSDB
from src.vector_db.kendra import KendraDBclass LLMFactory:_models: Dict[str, Type[BaseLLM]] = {"gpt-4o3": OpenAIGPT,"ai21-jamba": BedrockLLM,"claude-3-opus": BedrockLLM,# 其他模型映射...}@classmethoddef create(cls, model_name: str) -> BaseLLM:if model_name not in cls._models:raise ValueError(f"Unsupported model: {model_name}")return cls._models[model_name](model_name)@classmethoddef list_models(cls):return list(cls._models.keys())class VectorSearchFactory:_dbs: Dict[str, Type[BaseVectorDB]] = {"faiss": FAISSDB,"kendra": KendraDB}@classmethoddef create(cls, db_type: str) -> BaseVectorDB:if db_type not in cls._dbs:raise ValueError(f"Unsupported vector DB: {db_type}")return cls._dbs[db_type]()@classmethoddef list_vector_dbs(cls):return list(cls._dbs.keys())
  1. 基础类实现 (src/llms/base.py):
from abc import ABC, abstractmethodclass BaseLLM(ABC):@abstractmethoddef generate(self, prompt: str) -> str:pass
  1. OpenAI实现 (src/llms/openai.py):
import openai
from .base import BaseLLMclass OpenAIGPT(BaseLLM):def __init__(self, model_name: str):self.model_name = model_namedef generate(self, prompt: str) -> str:response = openai.ChatCompletion.create(model=self.model_name,messages=[{"role": "user", "content": prompt}])return response.choices[0].message.content
  1. Bedrock实现 (src/llms/bedrock.py):
import boto3
from .base import BaseLLMclass BedrockLLM(BaseLLM):def __init__(self, model_id: str):self.client = boto3.client('bedrock-runtime')self.model_id = model_iddef generate(self, prompt: str) -> str:body = {"prompt": prompt,"maxTokens": 1024}response = self.client.invoke_model(modelId=self.model_id,body=json.dumps(body)return json.loads(response['body'].read())['completion']
  1. 向量数据库实现示例 (src/vector_db/faiss.py):
import faiss
import numpy as np
from .base import BaseVectorDBclass FAISSDB(BaseVectorDB):def __init__(self):self.index = faiss.IndexFlatL2(768)# 加载预构建的索引def search(self, query: str) -> str:# 实现向量搜索逻辑return "FAISS search results"
  1. 更新requirements.txt:
fastapi==0.109.2
uvicorn==0.27.1
openai>=1.0.0
boto3>=1.34.0
faiss-cpu>=1.7.4

部署步骤:

  1. 构建并推送Docker镜像:
export AWS_ACCOUNT_ID=123456789012
export AWS_REGION=us-west-2
export REGISTRY_NAME=llm-api
export TAG=latest# 构建镜像
docker build --platform linux/amd64 -t $REGISTRY_NAME .# 推送镜像
aws ecr get-login-password | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com
docker tag $REGISTRY_NAME $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$REGISTRY_NAME:$TAG
docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$REGISTRY_NAME:$TAG
  1. ECS任务定义需要包含以下权限(通过IAM角色):
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "bedrock:*","Resource": "*"},{"Effect": "Allow","Action": "kendra:*","Resource": "*"}]
}

该实现的关键点:

  1. 使用工厂模式灵活切换模型和向量数据库
  2. 通过boto3集成AWS Bedrock服务
  3. 提供标准化的API接口
  4. 容器化部署支持
  5. 完善的错误处理机制

测试API:

curl -X POST http://<ALB_DNS>/generate \-H "Content-Type: application/json" \-d '{"prompt": "Explain quantum computing","llm_name": "claude-3-opus","vector_search_type": "kendra"}'

文章转载自:

http://JIAXcSl8.bswnf.cn
http://STXlQNMc.bswnf.cn
http://X97m3lOU.bswnf.cn
http://dR5LiDF5.bswnf.cn
http://3Q6gnZvr.bswnf.cn
http://ucAEtWbT.bswnf.cn
http://s51u1kTD.bswnf.cn
http://Gg0aIhLh.bswnf.cn
http://mtNbjqpJ.bswnf.cn
http://dLPCwAPK.bswnf.cn
http://Fn2O6G5Z.bswnf.cn
http://Q2HhLGqm.bswnf.cn
http://meamDIwX.bswnf.cn
http://DC8Glw38.bswnf.cn
http://f0jePnzH.bswnf.cn
http://1pLscEzz.bswnf.cn
http://Lwj2erxZ.bswnf.cn
http://XTCsf56b.bswnf.cn
http://tuJHCA6J.bswnf.cn
http://WVZE0SCQ.bswnf.cn
http://HzIuX7SW.bswnf.cn
http://Z0bmmpVb.bswnf.cn
http://UWeNzkpZ.bswnf.cn
http://twU8hyhc.bswnf.cn
http://h5aC0KOy.bswnf.cn
http://BwKX1XWf.bswnf.cn
http://1eag2yoj.bswnf.cn
http://rnc4NyUK.bswnf.cn
http://T6se6chM.bswnf.cn
http://jma5ryaC.bswnf.cn
http://www.dtcms.com/wzjs/740096.html

相关文章:

  • 承接网站开发江阴哪里有做网站推广
  • 龙岩做网站开发哪家厉害php做的网站建设
  • 良精企业网站管理系统永久免费的网站哪个好
  • 在阿里云做的网站怎么进后台网页设计报告参考文献
  • 南京网站优化平台软件开发工程师需要什么证书
  • 无锡网站建设要多少钱热门游戏推荐
  • 做网站要用什么软件教你如何快速建站
  • ps网站专题怎么做网站建设空间域名是什么意思
  • 网站入口专业微网站
  • 三门峡专业做网站公司做pc网站排
  • 网站空间租用续费服务合同做公司网站都需要什么
  • 网站规划与建设的案例分析郑州知名做网站公司有哪些
  • 南海建设局网站国内十大微信小程序开发公司
  • 百度 如何 关键字 网站域名 关联云建站平台哪家好
  • 北京城乡建设集团网站网页上的视频怎么下载
  • 企业网站备案流程深圳建筑工程
  • 响应式网站的制作工具wordpress 导入excel
  • 4网站建设哪里好点网站开发行情
  • seo网站建设价格找网站公司做网站的陷阱
  • 大连建站平台做网站分为哪些功能的网站
  • ps为什么做不了视频网站美发网站怎么做
  • 西安网站制作托广告投放数据分析
  • 科技资讯 哪个网站好南美洲网站后缀
  • 激光东莞网站建设wordpress知乎
  • 电子商城网站怎么做wordpress设置前台投稿
  • 网站的交互设计请将已备案网站接入访问
  • 网站建设环境分析公司为什么要建立网站
  • 东莞茶山网站建设企业战略管理咨询公司
  • 有没有做兼职的网站吗淘客推广网站怎么做
  • 网站运行与维护企业邮箱在哪里登陆