mirror of https://github.com/corca-ai/EVAL
Feature/better usability (#6)
* refactor: api, core * feat: static uploader * doc: update readme * fix: mkdir static file * doc: typopull/5/head^2
parent
264467d660
commit
3ec0cc786c
@ -1,10 +1,4 @@
|
||||
BOT_NAME=<your-bot-name>
|
||||
AWS_ACCESS_KEY_ID=***
|
||||
AWS_SECRET_ACCESS_KEY=***
|
||||
AWS_REGION=***
|
||||
AWS_S3_BUCKET=***
|
||||
WINEDB_HOST=***
|
||||
WINEDB_PASSWORD=***
|
||||
OPENAI_API_KEY=***
|
||||
BING_SEARCH_URL=***
|
||||
BING_SUBSCRIPTION_KEY=***
|
||||
|
@ -1,15 +1,15 @@
|
||||
from langchain.chat_models.base import BaseChatModel
|
||||
from langchain.output_parsers.base import BaseOutputParser
|
||||
|
||||
from prompts.input import EVAL_PREFIX, EVAL_SUFFIX
|
||||
from env import settings
|
||||
|
||||
from tools.base import BaseToolSet
|
||||
from tools.factory import ToolsFactory
|
||||
from core.prompts.input import EVAL_PREFIX, EVAL_SUFFIX
|
||||
from core.tools.base import BaseToolSet
|
||||
from core.tools.factory import ToolsFactory
|
||||
|
||||
from agents.llm import ChatOpenAI
|
||||
from agents.chat_agent import ConversationalChatAgent
|
||||
from agents.parser import EvalOutputParser
|
||||
from .llm import ChatOpenAI
|
||||
from .chat_agent import ConversationalChatAgent
|
||||
from .parser import EvalOutputParser
|
||||
|
||||
|
||||
class AgentBuilder:
|
@ -1,14 +1,14 @@
|
||||
from typing import Dict, Any
|
||||
from typing import Dict
|
||||
|
||||
from langchain.agents.tools import BaseTool
|
||||
from langchain.agents.agent import Agent, AgentExecutor
|
||||
from langchain.chains.conversation.memory import ConversationBufferMemory
|
||||
from langchain.memory.chat_memory import BaseChatMemory
|
||||
|
||||
from tools.base import BaseToolSet
|
||||
from tools.factory import ToolsFactory
|
||||
from core.tools.base import BaseToolSet
|
||||
from core.tools.factory import ToolsFactory
|
||||
|
||||
from agents.builder import AgentBuilder
|
||||
from .builder import AgentBuilder
|
||||
|
||||
|
||||
class AgentManager:
|
@ -1,8 +1,8 @@
|
||||
import pandas as pd
|
||||
|
||||
from prompts.file import DATAFRAME_PROMPT
|
||||
from core.prompts.file import DATAFRAME_PROMPT
|
||||
|
||||
from handlers.base import BaseHandler
|
||||
from .base import BaseHandler
|
||||
|
||||
|
||||
class CsvToDataframe(BaseHandler):
|
@ -1,4 +1,4 @@
|
||||
from typing import Optional, Callable, Tuple
|
||||
from typing import Callable, Tuple
|
||||
from enum import Enum
|
||||
|
||||
from langchain.agents.tools import Tool, BaseTool
|
@ -0,0 +1,2 @@
|
||||
from .s3 import S3Uploader
|
||||
from .static import StaticUploader
|
@ -0,0 +1,15 @@
|
||||
from abc import ABC, abstractmethod, abstractstaticmethod
|
||||
|
||||
from env import DotEnv
|
||||
|
||||
STATIC_DIR = "static"
|
||||
|
||||
|
||||
class AbstractUploader(ABC):
|
||||
@abstractmethod
|
||||
def upload(self, filepath: str) -> str:
|
||||
pass
|
||||
|
||||
@abstractstaticmethod
|
||||
def from_settings(settings: DotEnv) -> "AbstractUploader":
|
||||
pass
|
@ -0,0 +1,35 @@
|
||||
import os
|
||||
import boto3
|
||||
|
||||
from env import DotEnv
|
||||
from .base import AbstractUploader
|
||||
|
||||
|
||||
class S3Uploader(AbstractUploader):
|
||||
def __init__(self, accessKey: str, secretKey: str, region: str, bucket: str):
|
||||
self.accessKey = accessKey
|
||||
self.secretKey = secretKey
|
||||
self.region = region
|
||||
self.bucket = bucket
|
||||
self.client = boto3.client(
|
||||
"s3",
|
||||
aws_access_key_id=self.accessKey,
|
||||
aws_secret_access_key=self.secretKey,
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def from_settings(settings: DotEnv) -> "S3Uploader":
|
||||
return S3Uploader(
|
||||
settings["AWS_ACCESS_KEY_ID"],
|
||||
settings["AWS_SECRET_ACCESS_KEY"],
|
||||
settings["AWS_REGION"],
|
||||
settings["AWS_S3_BUCKET"],
|
||||
)
|
||||
|
||||
def get_url(self, object_name: str) -> str:
|
||||
return f"https://{self.bucket}.s3.{self.region}.amazonaws.com/{object_name}"
|
||||
|
||||
def upload(self, filepath: str) -> str:
|
||||
object_name = os.path.basename(filepath)
|
||||
self.client.upload_file(filepath, self.bucket, object_name)
|
||||
return self.get_url(object_name)
|
@ -0,0 +1,25 @@
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from env import DotEnv
|
||||
from .base import AbstractUploader
|
||||
|
||||
|
||||
class StaticUploader(AbstractUploader):
|
||||
STATIC_DIR = "static"
|
||||
|
||||
def __init__(self, server: str):
|
||||
self.server = server
|
||||
|
||||
@staticmethod
|
||||
def from_settings(settings: DotEnv) -> "StaticUploader":
|
||||
return StaticUploader(settings["SERVER"])
|
||||
|
||||
def get_url(self, uploaded_path: str) -> str:
|
||||
return f"{self.server}/{uploaded_path}"
|
||||
|
||||
def upload(self, filepath: str):
|
||||
upload_path = os.path.join(StaticUploader.STATIC_DIR, filepath)
|
||||
os.makedirs(os.path.dirname(upload_path), exist_ok=True)
|
||||
shutil.copy(filepath, upload_path)
|
||||
return f"{self.server}/{upload_path}"
|
@ -1,22 +0,0 @@
|
||||
import os
|
||||
import boto3
|
||||
|
||||
from env import settings
|
||||
|
||||
|
||||
def upload(file_name: str):
|
||||
return upload_file(file_name, settings["AWS_S3_BUCKET"])
|
||||
|
||||
|
||||
def upload_file(file_name, bucket, object_name=None):
|
||||
if object_name is None:
|
||||
object_name = os.path.basename(file_name)
|
||||
|
||||
s3_client = boto3.client(
|
||||
"s3",
|
||||
aws_access_key_id=settings["AWS_ACCESS_KEY_ID"],
|
||||
aws_secret_access_key=settings["AWS_SECRET_ACCESS_KEY"],
|
||||
)
|
||||
s3_client.upload_file(file_name, bucket, object_name)
|
||||
|
||||
return f"https://{bucket}.s3.{settings['AWS_REGION']}.amazonaws.com/{object_name}"
|
Loading…
Reference in New Issue