claude-skills/.claude/skills/euron-qa/SKILL.md
Answer Euron Gen AI Bootcamp doubts instantly. Covers Euri API setup across all frameworks (Python, LangChain, OpenAI SDK, TypeScript, n8n, curl), MCP server setup, common errors, model recommendations, and token limits. Use when someone in the bootcamp asks a question.
npx skillsauth add aiagentwithdhruv/automation euron-qaInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Instantly answer any Euron Gen AI Certification Bootcamp doubt by looking up the right code snippet, config, or troubleshooting step from this reference.
https://api.euron.one/api/v1/euriAuthorization: Bearer <EURI_API_KEY>ChatOpenAI(...) or OpenAI(...), just add base_url pointing to Euri.Answer (copy-paste ready):
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4.1-nano", # or gemini-2.5-flash, any Euri model
api_key="your-euri-api-key",
base_url="https://api.euron.one/api/v1/euri"
)
response = llm.invoke("Hello!")
print(response.content)
That's it. Everywhere Sudhanshu sir uses ChatOpenAI(...), just add the base_url parameter pointing to Euri. Everything else (agents, chains, tools) stays exactly the same.
from openai import OpenAI
client = OpenAI(
api_key="your-euri-api-key",
base_url="https://api.euron.one/api/v1/euri"
)
response = client.chat.completions.create(
model="gemini-2.5-flash",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
pip install euriai
from euriai import EuriaiClient
client = EuriaiClient(
api_key="your-euri-api-key",
model="gemini-2.5-flash"
)
response = client.generate_completion(
prompt="What is AI?",
temperature=0.7,
max_tokens=500
)
print(response["choices"][0]["message"]["content"])
pip install euriai[langchain]
from euriai.langchain import EuriaiChatModel
chat = EuriaiChatModel(api_key="your-key", model="gemini-2.5-flash")
result = chat.invoke("Explain Docker")
print(result.content)
import requests
response = requests.post(
"https://api.euron.one/api/v1/euri/chat/completions",
headers={
"Authorization": "Bearer your-euri-api-key",
"Content-Type": "application/json",
},
json={
"model": "gemini-2.5-flash",
"messages": [{"role": "user", "content": "Hello!"}],
"temperature": 0.7,
"max_tokens": 500,
},
)
data = response.json()
print(data["choices"][0]["message"]["content"])
curl -X POST https://api.euron.one/api/v1/euri/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"messages": [{"role": "user", "content": "Hello!"}],
"model": "gemini-2.5-flash"
}'
const response = await fetch("https://api.euron.one/api/v1/euri/chat/completions", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.EURI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "gemini-2.5-flash",
messages: [{ role: "user", content: "Hello!" }],
}),
});
const data = await response.json();
console.log(data.choices[0].message.content);
Option A — OpenAI Credential (easiest):
https://api.euron.one/api/v1/euriOption B — HTTP Request Node:
POSThttps://api.euron.one/api/v1/euri/chat/completionsAuthorization: Bearer {{ $env.EURI_API_KEY }}{
"model": "gemini-2.5-flash",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "{{ $json.userMessage }}"}
],
"temperature": 0.7,
"max_tokens": 1000
}
{{ $json.choices[0].message.content }}from openai import OpenAI
client = OpenAI(
api_key="your-euri-api-key",
base_url="https://api.euron.one/api/v1/euri"
)
response = client.embeddings.create(
model="gemini-embedding-001", # or text-embedding-3-small
input="Your text here"
)
print(response.data[0].embedding[:5]) # First 5 dimensions
Available embedding models:
| Model | ID | Dimensions |
|-------|-----|-----------|
| Gemini Embedding 001 | gemini-embedding-001 | 1536 |
| Text Embedding 3 Small | text-embedding-3-small | 1536 |
| M2 BERT 80M 32K | togethercomputer/m2-bert-80M-32k-retrieval | 1536 |
from openai import OpenAI
client = OpenAI(
api_key="your-euri-api-key",
base_url="https://api.euron.one/api/v1/euri"
)
response = client.images.generate(
model="gemini-3-pro-image-preview",
prompt="A futuristic city at sunset, cyberpunk style",
n=1
)
print(response.data[0].url)
| Use Case | Model ID | Why |
|----------|----------|-----|
| General purpose | gemini-2.5-flash | Best balance of speed + quality |
| Complex reasoning | gemini-2.5-pro | 2M context, best reasoning |
| Fast & cheap | gpt-4.1-nano | Cheapest, ultra-fast |
| Also fast & cheap | gpt-5-nano-2025-08-07 | Newer nano model |
| Code generation | gpt-4.1-mini or gemini-2.5-flash | Good at code |
| Web search | groq/compound | Built-in web search |
| Embeddings (RAG) | gemini-embedding-001 | Best quality embeddings |
| Image generation | gemini-3-pro-image-preview | Only image model on Euri |
Full model list (24 models):
Text Models (20):
qwen/qwen3-32b (Alibaba, 128K)gemini-2.0-flash (Google, 1M)gemini-2.5-pro (Google, 2M)gemini-2.5-flash (Google, 1M)gemini-2.5-pro-preview-06-05 (Google, 2M)gemini-2.5-flash-preview-05-20 (Google, 1M)gemini-2.5-flash-lite-preview-06-17 (Google, 128K)groq/compound (Groq, 131K)groq/compound-mini (Groq, 131K)llama-4-scout-17b-16e-instruct (Meta, 128K)llama-4-maverick-17b-128e-instruct (Meta, 128K)llama-3.3-70b-versatile (Meta, 128K)llama-3.1-8b-instant (Meta, 128K)llama-guard-4-12b (Meta, 128K)gpt-5-nano-2025-08-07 (OpenAI, 128K)gpt-5-mini-2025-08-07 (OpenAI, 128K)gpt-4.1-nano (OpenAI, 128K)gpt-4.1-mini (OpenAI, 128K)openai/gpt-oss-20b (OpenAI, 128K)openai/gpt-oss-120b (OpenAI, 128K)Common fixes:
401 Unauthorized — API key is wrong or missing
Authorization: Bearer YOUR_KEY (not Api-Key or X-API-Key)Model not found — Wrong model ID
gpt-4.1 instead of gpt-4.1-nanoRate limit / 429 — Hit 200K daily token limit
max_tokensgpt-4.1-nano)Response content is array instead of string
content as [{type:"text", text:"..."}] instead of a plain stringcontent if isinstance(content, str) else content[0]["text"]LangChain version issues
langchain_openai (not langchain.chat_models)pip install langchain-openai (separate package)"Connection refused" or timeout
https://api.euron.one/api/v1/euri (no trailing slash)Same as normal LangChain — just use the Euri LLM:
from langchain_openai import ChatOpenAI
from langchain.agents import create_react_agent, AgentExecutor
from langchain.tools import Tool
# Euri-powered LLM
llm = ChatOpenAI(
model="gemini-2.5-flash",
api_key="your-euri-api-key",
base_url="https://api.euron.one/api/v1/euri"
)
# Use llm in any chain, agent, or tool — works identically to OpenAI
Key insight: Euri is a drop-in replacement. ANY LangChain tutorial or Sudhanshu sir's code works — just add the base_url parameter.
Full guide: See Angelina AI System/Euron/MAIL-MCP-SETUP.md
Quick setup pattern for any MCP server:
cd "Gen AI 2.O/MCP/<server-folder>"
python3 -m venv venv
source venv/bin/activate # macOS/Linux
# venv\Scripts\activate # Windows
pip install -r requirements.txt
python authenticate.py # For Google services only
8 MCP servers available:
Claude Desktop config location:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonCursor config location:
~/.cursor/mcp.json (macOS/Linux)%USERPROFILE%\.cursor\mcp.json (Windows)Common MCP errors:
mcp.run(transport="stdio"), don't use -m mcp runpython authenticate.py againtoken.json, re-authenticateSame pattern — Euri is OpenAI-compatible:
CrewAI:
from crewai import LLM
llm = LLM(
model="openai/gemini-2.5-flash",
api_key="your-euri-key",
base_url="https://api.euron.one/api/v1/euri"
)
AutoGen:
config_list = [{
"model": "gemini-2.5-flash",
"api_key": "your-euri-key",
"base_url": "https://api.euron.one/api/v1/euri"
}]
LiteLLM:
import litellm
response = litellm.completion(
model="openai/gemini-2.5-flash",
api_key="your-euri-key",
api_base="https://api.euron.one/api/v1/euri",
messages=[{"role": "user", "content": "Hello!"}]
)
Rule of thumb: Any framework that supports custom base_url or OpenAI-compatible endpoints works with Euri. Just swap the base URL.
gpt-4.1-nano or gemini-2.5-flash-lite for testing to conserve tokensapi_key in code or Authorization: Bearer <key> in HTTP headersYes! Euri gives 200,000 free tokens per day. No credit card needed. Access to all 24 models including GPT-4.1, Gemini 2.5, Llama 4, and more.
When answering bootcamp doubts, use this format:
Hey [Name]! [Short explanation of the fix]
[Code snippet — copy-paste ready]
[One-line explanation of what changed]
Good free models to use:
- gpt-4.1-nano — fast & cheap
- gemini-2.5-flash — best general purpose
- gemini-2.5-pro — smartest
You get 200K free tokens/day so you won't hit limits during practicals.
For deeper answers, check these files:
Angelina AI System/Euron/README.mdAngelina AI System/Euron/euri-client.tsAngelina AI System/Euron/euri-models.tsAngelina AI System/Euron/examples/python-sdk.pyAngelina AI System/Euron/examples/basic-chat.tsAngelina AI System/Euron/examples/n8n-http-request.mdAngelina AI System/Euron/MAIL-MCP-SETUP.mdAngelina AI System/Euron/model-arena/arena.htmlAngelina AI System/Euron/euri-tester/index.html| Name | Type | Required | Description |
|------|------|----------|-------------|
| question | string | Yes | Bootcamp student question about Euri API, MCP, models, or errors |
| Name | Type | Description |
|------|------|-------------|
| answer | string | Copy-paste ready answer with code snippets |
Free (reference lookup only)
content-media
Find viral YouTube videos in your niche for competitive intelligence. Use when user asks to find YouTube outliers, monitor competitors, or track viral videos.
tools
Send welcome email sequence to new clients. Use when user asks to send welcome emails, onboard new client with emails, or trigger welcome sequence.
tools
Complete video editing toolkit - silence removal, auto-captions, vertical crop, YouTube clipping, 3D transitions, and social media compression. Use when user asks to edit video, remove silences, add captions/subtitles, crop to vertical/shorts, download YouTube clips, compress video, or create video teasers.
tools
Scrape Upwork jobs and generate personalized proposals with cover letters. Use when user asks to find Upwork jobs, create Upwork proposals, or apply to Upwork listings.