|
from langchain.llms.base import LLM |
|
from typing import Optional, List, Mapping, Any |
|
import anthropic |
|
from urllib.parse import urlparse |
|
import os |
|
class ClaudeLLM(LLM): |
|
|
|
@property |
|
def _llm_type(self) -> str: |
|
|
|
return "custom" |
|
|
|
def _call(self, prompt: str, stop: Optional[List[str]] = None) -> str: |
|
|
|
|
|
client = anthropic.Client(os.environ['ANTHROPIC_KEY']) |
|
|
|
|
|
|
|
prompt_formatted = ( |
|
f"{anthropic.HUMAN_PROMPT}{prompt}\n{anthropic.AI_PROMPT}" |
|
) |
|
|
|
|
|
response = client.completion( |
|
prompt=prompt_formatted, |
|
stop_sequences=[anthropic.HUMAN_PROMPT], |
|
model="claude-instant-v1-100k", |
|
max_tokens_to_sample=100000, |
|
temperature=0.3, |
|
) |
|
|
|
return response["completion"] |
|
|
|
@property |
|
def _identifying_params(self) -> Mapping[str, Any]: |
|
"""Get the identifying parameters.""" |
|
return { |
|
|
|
} |
|
|
|
def remove_numbers(question): |
|
return question.translate(str.maketrans('', '', '0123456789')) |
|
|
|
def extract_website_name(url): |
|
parsed_url = urlparse(url) |
|
if parsed_url.netloc.startswith("www."): |
|
return parsed_url.netloc.split("www.")[1].split(".")[0] |
|
return parsed_url.netloc.split(".")[0] |