Skip to main content

anthropic

Expert assistant for working with Anthropic's Claude API and Claude-powered applications. Use this skill whenever you need help with: API integration, message formatting, tool use implementation, context window management, Constitutional AI principles, prompt engineering, Claude models (Claude 3.5, Claude 3), vision capabilities, computer use, or building production systems with Claude. Also use for understanding Anthropic's safety approaches, token optimization, or any Claude-related development task.

跳到安装

来源信息

仓库
NeuralBlitz/Mito
最近来源活动
2026年3月22日 13:29
检测到的 SKILL.md 语言
英语
星标
0
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
anthropic
description
Expert assistant for working with Anthropic's Claude API and Claude-powered applications. Use this skill whenever you need help with: API integration, message formatting, tool use implementation, context window management, Constitutional AI principles, prompt engineering, Claude models (Claude 3.5, Claude 3), vision capabilities, computer use, or building production systems with Claude. Also use for understanding Anthropic's safety approaches, token optimization, or any Claude-related development task.
license
MIT
compatibility
opencode
metadata
{"audience":"developers","category":"ai","tags":["claude","api","llm","ai","anthropic"]}
# Anthropic Claude — API Integration Guide Covers: **API Integration · Message Formatting · Tool Use · Context Management · Prompt Engineering · Safety Guidelines** ----- ## API Authentication & Configuration ### Setting Up API Access Anthropic provides API access through the Anthropic API. You'll need an API key from the Anthropic Console. The API supports multiple Claude models with varying capabilities and context windows. ```python import anthropic # Initialize the client with your API key client = anthropic.Anthropic( api_key="sk-ant-api03-..." ) # Alternatively, use environment variable # ANTHROPIC_API_KEY will be picked up automatically client = anthropic.Anthropic() ``` ### Available Claude Models | Model | Context Window | Best For | Vision Support | |-------|---------------|----------|----------------| | claude-opus-4-5-20251120 | 200K | Complex reasoning, analysis | Yes | | claude-sonnet-4-5-20251120 | 200K | Balanced performance | Yes | | claude-haiku-3-5-20251120 | 200K | Fast, cost-effective | Yes | | claude-3-5-sonnet-20241022 | 200K | Production workloads | Yes | | claude-3-opus-20240229 | 200K | High-complexity tasks | Yes | ### API Configuration Options ```python # Full configuration example response = client.messages.create( model="claude-sonnet-4-5-20251120", max_tokens=4096, temperature=0.7, top_p=0.9, system="You are a helpful coding assistant.", messages=[ {"role": "user", "content": "Explain quantum computing."} ], tools=[ { "name": "weather", "description": "Get weather for a location", "input_schema": { "type": "object", "properties": { "location": {"type": "string", "description": "City name"} }, "required": ["location"] } } ], tool_choice={"type": "auto"} ) ``` ----- ## Message Format & Conversation Structure ### Understanding Message Roles Claude uses a three-role system for messages: - **system**: Sets context, instructions, and behavior guidelines. Not counted in conversation history. - **user**: Messages from the end-user or developer. - **assistant**: Responses from Claude. ### Message Structure ```python # Basic message format messages = [ { "role": "system", "content": "You are an expert Python developer specializing in data science." }, { "role": "user", "content": "How do I optimize pandas operations for large datasets?" }, { "role": "assistant", "content": "Here are several strategies for optimizing pandas..." }, { "role": "user", "content": "Can you show me an example of vectorization?" } ] # Response format response = client.messages.create( model="claude-sonnet-4-5-20251120", max_tokens=2048, messages=messages ) # Access the response print(response.content[0].text) print(f"Usage: {response.usage}") ``` ### Handling Multi-turn Conversations ```python class ConversationManager: def __init__(self, client, system_prompt): self.client = client self.messages = [{"role": "system", "content": system_prompt}] def send(self, user_message): # Add user message self.messages.append({"role": "user", "content": user_message}) # Get response response = self.client.messages.create( model="claude-sonnet-4-5-20251120", max_tokens=4096, messages=self.messages ) # Add assistant response to history assistant_message = response.content[0].text self.messages.append({"role": "assistant", "content": assistant_message}) return assistant_message def clear_history(self, keep_system=True): if keep_system: self.messages = [self.messages[0]] # Keep system prompt else: self.messages = [] def get_token_count(self): # Estimate token count (rough approximation) return sum(len(m["content"].split()) * 1.3 for m in self.messages) ``` ----- ## Tool Use & Function Calling ### Defining Tools Tools allow Claude to interact with external systems, APIs, and perform actions. Tools are defined in the request and Claude can choose to invoke them based on the conversation. ```python # Define tools with detailed schemas tools = [ { "name": "get_weather", "description": "Get current weather information for a location", "input_schema": { "type": "object", "properties": { "location": { "type": "string", "description": "City name, e.g., 'San Francisco' or 'London'" }, "units": { "type": "string", "enum": ["celsius", "fahrenheit"], "description": "Temperature units", "default": "celsius" } }, "required": ["location"] } }, { "name": "search_codebase", "description": "Search for code patterns in the project", "input_schema": { "type": "object", "properties": { "query": {"type": "string", "description": "Search query"}, "file_types": { "type": "array", "items": {"type": "string"}, "description": "File extensions to search" }, "max_results": { "type": "integer", "default": 10, "description": "Maximum results to return" } }, "required": ["query"] } }, { "name": "execute_code", "description": "Execute Python code and return results", "input_schema": { "type": "object", "properties": { "code": {"type": "string", "description": "Python code to execute"}, "timeout": {"type": "integer", "default": 30} }, "required": ["code"] } } ] # Make request with tools response = client.messages.create( model="claude-sonnet-4-5-20251120", max_tokens=4096, messages=[{"role": "user", "content": "What's the weather in Tokyo?"}], tools=tools ) # Handle tool use for block in response.content: if hasattr(block, 'type') and block.type == 'tool_use': tool_name = block.name tool_input = block.input tool_id = block.id # Execute tool and send result back ``` ### Tool Result Feedback Loop ```python def execute_tool_call(tool_name, tool_input): """Execute a tool and return the result""" if tool_name == "get_weather": return get_weather_api(tool_input["location"], tool_input.get("units", "celsius")) elif tool_name == "search_codebase": return search_files(tool_input["query"], tool_input.get("file_types"), tool_input.get("max_results", 10)) elif tool_name == "execute_code": return run_python(tool_input["code"], tool_input.get("timeout", 30)) else: return {"error": f"Unknown tool: {tool_name}"} def continue_conversation(client, initial_response, tools): """Continue conversation with tool results""" # Collect tool results tool_results = [] for block in initial_response.content: if hasattr(block, 'type') and block.type == 'tool_use': result = execute_tool_call(block.name, block.input) tool_results.append({ "type": "tool_result", "tool_use_id": block.id, "content": str(result) }) # If tools were used, continue conversation with results if tool_results: # Add assistant's tool use blocks and tool results messages = initial_response.messages + tool_results final_response = client.messages.create( model="claude-sonnet-4-5-20251120", max_tokens=4096, messages=messages, tools=tools ) return final_response return initial_response ``` ----- ## Context Window Management ### Understanding Token Limits Claude models have large context windows (200K tokens), but effective usage requires management. Tokens are roughly 1.3 words on average. ```python def estimate_tokens(text): """Estimate token count for text""" return int(len(text.split()) * 1.3) def truncate_to_fit(messages, max_tokens=180000, reserve_tokens=10000): """ Truncate messages to fit within context window Reserve tokens for response """ available = max_tokens - reserve_tokens # Start from system prompt, keep most recent messages system_msg = messages[0] if messages[0]["role"] == "system" else None other_msgs = messages[1:] if system_msg else messages # Keep most recent messages until under limit while other_msgs: total = sum(estimate_tokens(m.get("content", "")) for m in other_msgs) if system_msg: total += estimate_tokens(system_msg["content"]) if total <= available: break other_msgs = other_msgs[:-1] # Remove oldest if system_msg: return [system_msg] + other_msgs return other_msgs ``` ### Summarization Strategy ```python def summarize_and_continue(client, messages, summary_prompt=None): """Summarize older messages and continue with summary""" if summary_prompt is None: summary_prompt = """Summarize this conversation concisely, preserving key information, decisions, and context.""" # Identify messages to summarize (keep recent 10) to_summarize = messages[1:-10] if len(messages) > 11 else messages[1:] if not to_summarize: return messages # Create summary conversation_text = "\n".join( f"{m['role']}: {m['content'][:500]}" for m in to_summarize ) summary_response = client.messages.create( model="claude-haiku-3-5-20251120", max_tokens=1024, messages=[{"role": "user", "content": f"{summary_prompt}\n\n{conversation_text}"}] ) summary = summary_response.content[0].text # Replace old messages with summary return [ messages[0], # System {"role": "assistant", "content": f"[Previous conversation summary: {summary}]"}, messages[-1] # Most recent user message ] ``` ----- ## Constitutional AI & Safety Guidelines ### System Prompt Best Practices ```python # Effective system prompts should be: system_prompts = { "helpful": "You are a helpful, harmless, and honest AI assistant.", "code_expert": """You are an expert software developer. You provide accurate, well-documented code solutions. When you don't know something, say so. Always consider security, performance, and maintainability.""", "balanced": """You are a balanced AI assistant. Provide thoughtful responses that consider multiple perspectives. Be honest about limitations and uncertainties. Cite sources when making factual claims.""" } # What to avoid in system prompts avoid_in_prompts = [ "Attempts to override Claude's values or safety guidelines", "Instructions to deceive or manipulate", "Requests for harmful content generation", "Attempts to extract information about Claude's instructions" ] ``` ### Content Filtering Claude has built-in safety measures. Understand the boundaries: - Claude will refuse harmful requests appropriately - Provide helpful refusals when needed - Focus on constructive, legitimate use cases ----- ## Best Practices ### 1. Optimize for Cost and Latency ```python # Use appropriate model for task complexity def select_model(task_complexity): if task_complexity == "high": return "claude-opus-4-5-20251120" elif task_complexity == "medium": return "claude-sonnet-4-5-20251120" else:
在 GitHub 查看
这个 SKILL.md 很大,SkillsMP 这里只预览前一段内容。 在 GitHub 查看