In [1]:
from dotenv import load_dotenv
load_dotenv()
Out[1]:
True
In [2]:
import os, asyncio, json
from langchain.chat_models import init_chat_model
from langchain.agents import create_agent, AgentState
from langchain.messages import HumanMessage, AIMessage, ToolMessage
from langchain.tools import tool, ToolRuntime
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_community.utilities import SQLDatabase
from langchain_community.document_loaders import PyPDFLoader
from langgraph.checkpoint.memory import InMemorySaver
from langgraph.types import Command
from mcp.shared.exceptions import McpError
from mcp.types import CallToolResult, TextContent
from typing import Dict, Any
from tavily import TavilyClient
from pprint import pprint
from dataclasses import dataclass
from datetime import date
DEEPSEEK_MODEL = "deepseek-chat"
DEEPSEEK_BASE_URL = "https://api.deepseek.com"
def deepseek_model(model: str = DEEPSEEK_MODEL, max_tokens=1000, **kwargs):
return init_chat_model(
model=model,
# DeepSeek uses LangChain's OpenAI-compatible transport.
model_provider="openai",
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url=DEEPSEEK_BASE_URL,
max_tokens=max_tokens,
**kwargs,
)
In [3]:
from dataclasses import dataclass
from langchain.agents.middleware import dynamic_prompt, ModelRequest
@dataclass
class LanguageContext:
user_language: str = "English"
@dynamic_prompt
def user_language_prompt(request: ModelRequest) -> str:
"""Generate system prompt based on user role."""
user_language = request.runtime.context.user_language
base_prompt = "You are a helpful assistant."
if user_language != "English":
return f"{base_prompt} only respond in {user_language}."
elif user_language == "English":
return base_prompt
In [4]:
agent = create_agent(
model=deepseek_model(),
context_schema=LanguageContext,
middleware=[user_language_prompt]
)
In [8]:
agent
Out[8]:
In [5]:
response = agent.invoke(
{"messages": [HumanMessage(content="Hello, how are you?")]},
context=LanguageContext(user_language="Irish")
)
print(response["messages"][-1].content)
Dia duit! Tá mé go maith, go raibh maith agat. Conas atá tú féin?
In [7]:
print(response)
{'messages': [HumanMessage(content='Hello, how are you?', additional_kwargs={}, response_metadata={}, id='f3fb2d24-8bc8-4098-9c81-6322c7a8f967'), AIMessage(content='Dia duit! Tá mé go maith, go raibh maith agat. Conas atá tú féin?', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 29, 'prompt_tokens': 21, 'total_tokens': 50, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 0}, 'prompt_cache_hit_tokens': 0, 'prompt_cache_miss_tokens': 21}, 'model_provider': 'openai', 'model_name': 'deepseek-v4-flash', 'system_fingerprint': 'fp_8b330d02d0_prod0820_fp8_kvcache_20260402', 'id': '54df7418-4324-486c-a760-24da8d834510', 'finish_reason': 'stop', 'logprobs': None}, id='lc_run--019e2987-9a17-7c32-8a68-95c48badaefa-0', tool_calls=[], invalid_tool_calls=[], usage_metadata={'input_tokens': 21, 'output_tokens': 29, 'total_tokens': 50, 'input_token_details': {'cache_read': 0}, 'output_token_details': {}})]}
In [ ]:
In [ ]:
In [ ]:
response = agent.invoke(
{"messages": [HumanMessage(content="Hello, how are you?")]},
context=LanguageContext(user_language="Spanish")
)
print(response["messages"][-1].content)
In [ ]:
response = agent.invoke(
{"messages": [HumanMessage(content="Hello, how are you?")]},
context=LanguageContext(user_language="French")
)
print(response["messages"][-1].content)
In [ ]: