Added claude support. Still buggy due to instructor issues
This commit is contained in:
parent
90c41512ed
commit
d1435f6cd3
2 changed files with 57 additions and 0 deletions
0
cognee/infrastructure/llm/anthropic/__init__.py
Normal file
0
cognee/infrastructure/llm/anthropic/__init__.py
Normal file
57
cognee/infrastructure/llm/anthropic/adapter.py
Normal file
57
cognee/infrastructure/llm/anthropic/adapter.py
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
import asyncio
|
||||
|
||||
import aiohttp
|
||||
from typing import List, Type
|
||||
from pydantic import BaseModel
|
||||
import instructor
|
||||
from tenacity import retry, stop_after_attempt
|
||||
|
||||
import anthropic
|
||||
import openai
|
||||
from cognee.infrastructure.llm.llm_interface import LLMInterface
|
||||
from cognee.infrastructure.llm.prompts import read_query_prompt
|
||||
|
||||
|
||||
class AnthropicAdapter(LLMInterface):
|
||||
"""Adapter for Ollama's API"""
|
||||
|
||||
def __init__(self, ollama_endpoint, api_key: str, model: str):
|
||||
|
||||
|
||||
self.aclient = instructor.patch(
|
||||
create=anthropic.Anthropic().messages.create,
|
||||
mode=instructor.Mode.ANTHROPIC_TOOLS
|
||||
)
|
||||
self.model = model
|
||||
|
||||
|
||||
|
||||
|
||||
@retry(stop=stop_after_attempt(5))
|
||||
async def acreate_structured_output(self, text_input: str, system_prompt: str,
|
||||
response_model: Type[BaseModel]) -> BaseModel:
|
||||
"""Generate a response from a user query."""
|
||||
return await self.aclient(
|
||||
model=self.model,
|
||||
max_tokens=4096,
|
||||
max_retries=0,
|
||||
messages=[
|
||||
{
|
||||
"role": "user",
|
||||
"content": f"""Use the given format to
|
||||
extract information from the following input: {text_input}. {system_prompt}""",
|
||||
}
|
||||
],
|
||||
response_model=response_model,
|
||||
)
|
||||
|
||||
def show_prompt(self, text_input: str, system_prompt: str) -> str:
|
||||
"""Format and display the prompt for a user query."""
|
||||
if not text_input:
|
||||
text_input = "No user input provided."
|
||||
if not system_prompt:
|
||||
raise ValueError("No system prompt path provided.")
|
||||
system_prompt = read_query_prompt(system_prompt)
|
||||
|
||||
formatted_prompt = f"""System Prompt:\n{system_prompt}\n\nUser Input:\n{text_input}\n""" if system_prompt else None
|
||||
return formatted_prompt
|
||||
Loading…
Add table
Reference in a new issue