
Description
Real-time and streaming text generation via Together AI's OpenAI-compatible chat/completions API, including multi-turn conversations, tool and function calling, structured JSON outputs, and reasoning models. Reach for it whenever the user wants to build or debug text generation on Together AI, unless they specifically need batch jobs, embeddings, fine-tuning, dedicated endpoints, dedicated containers, or GPU clusters.
SKILL.md
Together Chat Completions
Overview
Use Together AI's serverless chat/completions API for interactive inference workloads:
- basic text generation
- streaming responses
- multi-turn chat state
- tool and function calling
- structured outputs
- reasoning-capable models
Treat this skill as the default entry point for Together AI text generation unless the task is clearly offline batch processing, vector retrieval, model training, or infrastructure management.
When This Skill Wins
- Build a chatbot, assistant, or text-generation endpoint on Together AI
- Add streaming output to a real-time user experience
- Implement tool calling or function-calling loops
- Constrain model output to JSON or a regex-defined shape
- Choose between standard chat models and reasoning models
- Debug request parameters, model behavior, or response shapes
Hand Off To Another Skill
- Use
together-batch-inferencefor large offline runs, backfills, or lower-cost asynchronous jobs - Use
together-embeddingsfor vector search, semantic retrieval, or reranking - Use
together-fine-tuningwhen the user wants to train or adapt a model - Use
together-dedicated-model-inferencewhen the user needs always-on single-tenant hosting - Use
together-dedicated-containersortogether-gpu-clustersfor custom infrastructure - For production stock-model workloads that need a defined SLA (committed throughput and reliability) without managing hardware, point users to Together's provisioned throughput tier (reserved PTU capacity, one-month minimum term, contact sales; uses the same chat/completions API surface)
Quick Routing
- Basic chat, streaming, or multi-turn state
- Start with references/api-parameters.md
- Use scripts/chat_basic.py or scripts/chat_basic.ts
- OpenAI SDK migration, rate limits, or debug headers
- Parallel async requests
- Tool calling or function calling
- Designing tools, schemas, or tool_choice for reliability
- Read the "Best Practices" section in references/function-calling-patterns.md
- Structured outputs
- Reasoning models or thinking-mode toggles
- Combining tools + structured output, or tools + streaming
- Read the "Combining Tool Calls with Structured Output" section in references/function-calling-patterns.md
- Read the "Streaming Structured Output" section in references/structured-outputs.md
- Model selection, context length, or pricing-aware choices
- Read references/models.md
Workflow
- Confirm that the workload is interactive serverless inference rather than batch, retrieval, or training.
- Pick the smallest model that satisfies latency, quality, and context requirements.
- Decide whether the job needs plain text, tools, structured output, or reasoning.
- Start from the matching script instead of re-deriving request shapes from scratch.
- Pull deeper details from the relevant reference file only when needed.
High-Signal Rules
- Python scripts require the Together v2 SDK (
together>=2.0.0). If the user is on an older version, they must upgrade first:uv pip install --upgrade "together>=2.0.0". - Use
client.chat.completions.create()for Python andclient.chat.completions.create()for TypeScript. - Preserve full
messageshistory for multi-turn conversations; do not rebuild context from final text only. - For tools, implement the full loop: model tool call -> execute tool -> append tool result -> second model call.
- For tool definitions, prefer
enumover free-form strings, set"additionalProperties": false, and add"strict": trueon the function definition when you need argument generation to conform to the schema. - Tool names must not contain spaces, periods, or dashes. Branch on
finish_reason("tool_calls"vs"stop") instead of assuming a tool was called, and parsefunction.argumentsas JSON inside a try/except. - Prefer
json_schemaover looser JSON modes when the user needs stable machine-readable output. - Use reasoning models only when the task benefits from deeper deliberation; otherwise prefer cheaper standard models.
- Preserved thinking uses the
reasoningkey on both output and input (the field is symmetric). When you pass a prior assistant turn back to the API, include"reasoning": ...on the assistant message;reasoning_contentis still accepted on input for backward compatibility but preferreasoningin new code. - Reasoning models nest extra token counts OpenAI-style (
usage.completion_tokens_details.reasoning_tokens,usage.prompt_tokens_details.cached_tokens), but some non-reasoning models returncached_tokensflat at the top ofusage. Read both locations defensively — clients that only check one shape will silently return0. See references/reasoning-models.md for the defensive-read pattern. - To combine tool calling with structured output, use a two-phase approach: Phase 1 sends
tools(noresponse_format), Phase 2 sendsresponse_format(notools) after tool results are appended. - Streaming works with
response_format; accumulate chunks and parse the final concatenated string as JSON. - If the user needs many independent requests, combine this skill with
async_parallel.pyor hand off to batch inference.
Resource Map
- Parameters and response fields: references/api-parameters.md
- OpenAI compatibility, rate-limit headers, and debug headers: references/api-parameters.md
- Function-calling patterns: references/function-calling-patterns.md
- Structured outputs: references/structured-outputs.md
- Reasoning models: references/reasoning-models.md
- Model catalog: references/models.md
Scripts
- scripts/chat_basic.py and scripts/chat_basic.ts: basic chat, streaming, and multi-turn state
- scripts/debug_headers.py and scripts/debug_headers.ts: raw-response inspection for routing, latency, and rate-limit headers
- scripts/async_parallel.py: async Python fan-out for independent requests
- scripts/tool_call_loop.py and scripts/tool_call_loop.ts: full tool-call loop
- scripts/structured_outputs.py and scripts/structured_outputs.ts: schema-guided and regex outputs
- scripts/reasoning_models.py and scripts/reasoning_models.ts: reasoning fields, effort, and hybrid toggles
Official Docs
More skills from the skills repository
View all 14 skillstogether-audio
process audio with Together AI
Jul 26AudioSpeechText-to-SpeechTranscriptiontogether-batch-inference
run asynchronous batch inference jobs
Jul 17AutomationLLMPerformancetogether-dedicated-containers
deploy custom inference containers on Together AI
Jul 26AI InfrastructureDeploymentDockerMachine Learningtogether-dedicated-model-inference
deploy and operate Together AI models
Jul 26AI InfrastructureDeploymentLLMtogether-embeddings
generate embeddings and build RAG pipelines
Jul 26AILLMRAGSearchtogether-evaluations
evaluate LLM outputs with Together AI
Jul 26BenchmarkingEvalsLLM
More from Together AI
View publisherblog-post
write structured blog posts
together-cookbook
Jul 17Content CreationMarketingSEOWritingsocial-media
create social media content
together-cookbook
Jul 17Content CreationMarketingSocial MediaWritingtogether-fine-tuning
fine-tune and adapt models on Together AI
skills
Jul 26AILLMMachine Learningtogether-gpu-clusters
orchestrate GPU clusters on Together AI
skills
Jul 26AI InfrastructureCloudKubernetesMachine Learningtogether-images
generate and edit images with Together AI
skills
Jul 17CreativeDesignImage GenerationMultimodal