fix: ban Ollama in prompt, use OpenAIEmbeddings for ChromaDB RAG
Explicitly forbid langchain_ollama/OllamaEmbeddings in _PROMPT. ChromaDB template now uses OpenAIEmbeddings via OpenRouter. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
+15
-11
@@ -211,6 +211,9 @@ _PROMPT = '''\
|
|||||||
|
|
||||||
## ОБЯЗАТЕЛЬНЫЕ ТЕХНИЧЕСКИЕ ПАТТЕРНЫ
|
## ОБЯЗАТЕЛЬНЫЕ ТЕХНИЧЕСКИЕ ПАТТЕРНЫ
|
||||||
|
|
||||||
|
> ⚠️ ЗАПРЕЩЕНО: langchain_ollama, OllamaEmbeddings, Ollama, langchain_community.
|
||||||
|
> Для LLM и эмбеддингов — ТОЛЬКО OpenRouter через langchain_openai.
|
||||||
|
|
||||||
### LLM — всегда OpenRouter:
|
### LLM — всегда OpenRouter:
|
||||||
```python
|
```python
|
||||||
import os
|
import os
|
||||||
@@ -268,32 +271,33 @@ if __name__ == "__main__":
|
|||||||
```
|
```
|
||||||
requirements.txt: deepagents, langchain-openai>=0.3.0, langchain>=1.2.10, langgraph>=0.2.0
|
requirements.txt: deepagents, langchain-openai>=0.3.0, langchain>=1.2.10, langgraph>=0.2.0
|
||||||
|
|
||||||
### RAG с Qdrant (для RAG-заданий):
|
### RAG с ChromaDB (для RAG-заданий с ChromaDB):
|
||||||
```python
|
```python
|
||||||
|
# ВАЖНО: embeddings — ТОЛЬКО OpenAIEmbeddings через OpenRouter, НЕ OllamaEmbeddings!
|
||||||
from langchain_openai import OpenAIEmbeddings
|
from langchain_openai import OpenAIEmbeddings
|
||||||
from langchain_qdrant import QdrantVectorStore
|
from langchain_chroma import Chroma
|
||||||
from qdrant_client import QdrantClient
|
|
||||||
from qdrant_client.models import Distance, VectorParams
|
|
||||||
from langchain_core.documents import Document
|
from langchain_core.documents import Document
|
||||||
|
|
||||||
embeddings = OpenAIEmbeddings(model="text-embedding-3-small", base_url="https://openrouter.ai/api/v1", api_key=os.getenv("OPENAI_API_KEY"))
|
embeddings = OpenAIEmbeddings(
|
||||||
client = QdrantClient(":memory:")
|
model="text-embedding-3-small",
|
||||||
client.create_collection("knowledge", vectors_config=VectorParams(size=1536, distance=Distance.COSINE))
|
base_url="https://openrouter.ai/api/v1",
|
||||||
vector_store = QdrantVectorStore(client=client, collection_name="knowledge", embedding=embeddings)
|
api_key=os.getenv("OPENAI_API_KEY"),
|
||||||
|
)
|
||||||
|
vector_store = Chroma(collection_name="knowledge", embedding_function=embeddings)
|
||||||
|
|
||||||
@tool
|
@tool
|
||||||
def search_knowledge(query: str) -> str:
|
def search_knowledge(query: str) -> str:
|
||||||
"""Search the knowledge base."""
|
"""Search the knowledge base for relevant information."""
|
||||||
docs = vector_store.similarity_search(query, k=3)
|
docs = vector_store.similarity_search(query, k=3)
|
||||||
return "\\n".join(d.page_content for d in docs) if docs else "No results."
|
return "\\n".join(d.page_content for d in docs) if docs else "No results."
|
||||||
|
|
||||||
@tool
|
@tool
|
||||||
def add_to_knowledge(content: str, title: str = "doc") -> str:
|
def add_to_knowledge(content: str, title: str = "doc") -> str:
|
||||||
"""Add content to knowledge base."""
|
"""Add content to the knowledge base."""
|
||||||
vector_store.add_documents([Document(page_content=content, metadata={{"title": title}})])
|
vector_store.add_documents([Document(page_content=content, metadata={{"title": title}})])
|
||||||
return f"Added: {{title}}"
|
return f"Added: {{title}}"
|
||||||
```
|
```
|
||||||
requirements.txt добавить: langchain-qdrant, qdrant-client
|
requirements.txt добавить: langchain-chroma, chromadb
|
||||||
|
|
||||||
### Планирующий агент (для planning-заданий):
|
### Планирующий агент (для planning-заданий):
|
||||||
```python
|
```python
|
||||||
|
|||||||
Reference in New Issue
Block a user