# Cohere

Cohere [Command-R](https://cohere.com/blog/command-r), RAG (retrieval-augmented generation) ve harici API'ler ile araçları çağırma gibi uzun bağlam görevleri için tasarlanmış, 35B parametreli çok dilli büyük bir dil modelidir. Model, temellendirilmiş üretim (grounded generation) için özel olarak eğitilmiştir ve hem tek adımlı hem de çok adımlı araç kullanımını destekler. 128K token'lık bir bağlam uzunluğunu destekler.

Tüm orijinal Command-R checkpoint'lerini [Command Models](https://huggingface.co/collections/CohereForAI/command-models-67652b401665205e17b192ad) koleksiyonunda bulabilirsiniz.

> [!TIP]
> Farklı dil görevlerine Cohere'yi nasıl uygulayacağınızla ilgili daha fazla örnek için sağ kenar çubuğundaki Cohere modellerine tıklayın.

Aşağıdaki örnek, [Pipeline](/docs/transformers/main/tr/main_classes/pipelines#transformers.Pipeline) veya [AutoModel](/docs/transformers/main/tr/model_doc/auto#transformers.AutoModel) ile ve komut satırından metin üretmenin nasıl yapılacağını göstermektedir.

```python
from transformers import pipeline

pipeline = pipeline(
    task="text-generation",
    model="CohereForAI/c4ai-command-r-v01",
    device=0
)
pipeline("Plants create energy through a process known as")
```

```python
from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("CohereForAI/c4ai-command-r-v01")
model = AutoModelForCausalLM.from_pretrained("CohereForAI/c4ai-command-r-v01", device_map="auto", attn_implementation="sdpa")

# format message with the Command-R chat template
messages = [{"role": "user", "content": "How do plants make energy?"}]
input_ids = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt").to(model.device)
output = model.generate(
    input_ids,
    max_new_tokens=100,
    do_sample=True,
    temperature=0.3,
    cache_implementation="static",
)
print(tokenizer.decode(output[0], skip_special_tokens=True))
```

```bash
# pip install -U flash-attn --no-build-isolation
transformers chat CohereForAI/c4ai-command-r-v01 --dtype auto --attn_implementation flash_attention_2
```

Quantization, ağırlıkları daha düşük bir hassasiyetle temsil ederek büyük modellerin bellek yükünü azaltır. Daha fazla kullanılabilir quantization backend'i için [Quantization](../quantization/overview) genel bakışına başvurun.

Aşağıdaki örnek, ağırlıkları 4-bite küçültmek için [bitsandbytes](../quantization/bitsandbytes) kullanır.

```python
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig

bnb_config = BitsAndBytesConfig(load_in_4bit=True)
tokenizer = AutoTokenizer.from_pretrained("CohereForAI/c4ai-command-r-v01")
model = AutoModelForCausalLM.from_pretrained("CohereForAI/c4ai-command-r-v01", device_map="auto", quantization_config=bnb_config, attn_implementation="sdpa")

# format message with the Command-R chat template
messages = [{"role": "user", "content": "How do plants make energy?"}]
input_ids = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt").to(model.device)
output = model.generate(
    input_ids,
    max_new_tokens=100,
    do_sample=True,
    temperature=0.3,
    cache_implementation="static",
)
print(tokenizer.decode(output[0], skip_special_tokens=True))
```

Modelin hangi token'lara dikkat edebildiğini ve edemediğini daha iyi anlamak için [AttentionMaskVisualizer](https://github.com/huggingface/transformers/blob/beb9b5b02246b9b7ee81ddf938f93f44cfeaad19/src/transformers/utils/attention_visualizer.py#L139)'ı kullanın.

```python
from transformers.utils.attention_visualizer import AttentionMaskVisualizer

visualizer = AttentionMaskVisualizer("CohereForAI/c4ai-command-r-v01")
visualizer("Plants create energy through a process known as")
```

    

## Notlar

- FlashAttention-2 kullanıyorsanız [from_pretrained()](/docs/transformers/main/tr/model_doc/auto#transformers.AutoModel.from_pretrained) içinde dtype parametresini kullanmayın çünkü yalnızca fp16 veya bf16 destekler. [Automatic Mixed Precision](https://pytorch.org/tutorials/recipes/recipes/amp_recipe.html) kullanmalı, [Trainer](/docs/transformers/main/tr/main_classes/trainer#transformers.Trainer) kullanıyorsanız fp16 veya bf16 değerini True olarak ayarlamalı veya [torch.autocast](https://pytorch.org/docs/stable/amp.html#torch.autocast) kullanmalısınız.

## CohereConfig[[transformers.CohereConfig]]

#### transformers.CohereConfig[[transformers.CohereConfig]]

```python
transformers.CohereConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 256000, hidden_size: int = 8192, intermediate_size: int = 22528, logit_scale: float | None = 0.0625, num_hidden_layers: int = 40, num_attention_heads: int = 64, num_key_value_heads: int | None = None, hidden_act: str = 'silu', max_position_embeddings: int = 8192, initializer_range: float = 0.02, layer_norm_eps: float | None = 1e-05, use_cache: bool = True, pad_token_id: int | None = 0, bos_token_id: int | None = 5, eos_token_id: int | list[int] | None = 255001, tie_word_embeddings: bool = True, rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None, attention_bias: bool = False, attention_dropout: float | int | None = 0.0, use_qk_norm: bool | None = False)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/cohere/configuration_cohere.py#L30)

**Parametreler:**

vocab_size (`int`, *isteğe bağlı*, varsayılan `256000`) : Modelin sözlük boyutu. `input_ids` tarafından temsil edilebilecek farklı token sayısını tanımlar.

hidden_size (`int`, *isteğe bağlı*, varsayılan `8192`) : Gizli temsillerin boyutu.

intermediate_size (`int`, *isteğe bağlı*, varsayılan `22528`) : MLP temsil boyutu.

logit_scale (`float`, *isteğe bağlı*, varsayılan 0.0625) : Çıktı logitleri için ölçekleme faktörü.

num_hidden_layers (`int`, *isteğe bağlı*, varsayılan `40`) : Transformer decoder'ındaki gizli katman sayısı.

num_attention_heads (`int`, *isteğe bağlı*, varsayılan `64`) : Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.

num_key_value_heads (`int`, *isteğe bağlı*) : Grouped Query Attention uygulamasında kullanılacak key_value başlarının sayısıdır. `num_key_value_heads=num_attention_heads` ise model Multi Head Attention (MHA) kullanır, `num_key_value_heads=1` ise model Multi Query Attention (MQA) kullanır, aksi halde GQA kullanılır. Çok başlı bir checkpoint'i GQA checkpoint'ine dönüştürürken, her grup key ve value başı, o gruptaki tüm orijinal başların ortalama havuzlanması (meanpooling) ile oluşturulmalıdır. Daha fazla ayrıntı için [bu makaleye](https://huggingface.co/papers/2305.13245) göz atın. Belirtilmezse, varsayılan olarak `num_attention_heads` kullanılır.

hidden_act (`str`, *isteğe bağlı*, varsayılan `silu`) : Dekoderdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, `"gelu"`, `"relu"`, `"silu"` vb.

max_position_embeddings (`int`, *isteğe bağlı*, varsayılan `8192`) : Bu modelin kullanılabileceği maksimum dizi uzunluğu.

initializer_range (`float`, *opsiyonel*, varsayılan `0.02`) : Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.

layer_norm_eps (`float`, *opsiyonel*, varsayılan `1e-05`) : Katman normalizasyonu katmanları tarafından kullanılan epsilon.

use_cache (`bool`, *isteğe bağlı*, varsayılan `True`) : Modelin son anahtar/değer dikkatlerini döndürüp döndürmeyeceğini belirtir (tüm modellerde kullanılmaz). Yalnızca `config.is_decoder=True` olduğunda veya model yalnızca çözücü tabanlı üretken bir model olduğunda geçerlidir.

pad_token_id (`int`, *isteğe bağlı*, varsayılan `0`) : Sözlükte dolgu için kullanılan token kimliği.

bos_token_id (`int`, *isteğe bağlı*, varsayılan `5`) : Sözlükte akış başlangıcı için kullanılan token kimliği.

eos_token_id (`Union[int, list[int]]`, *isteğe bağlı*, varsayılan `255001`) : Sözlükte akış sonu için kullanılan token kimliği.

tie_word_embeddings (`bool`, *isteğe bağlı*, varsayılan `True`) : Ağırlık gömme bağlamalarının, modelin `tied_weights_keys` eşlemesine göre yapılıp yapılmayacağını belirtir.

rope_parameters (`Union[~modeling_rope_utils.RopeParameters, dict]`, *isteğe bağlı*) : RoPE gömme yapılandırma parametrelerini içeren sözlük. Sözlük, `rope_theta` için bir değer içermeli ve daha uzun `max_position_embeddings` ile RoPE kullanmak istiyorsanız ölçekleme için kullanılan parametreleri isteğe bağlı olarak içermelidir.

attention_bias (`bool`, *isteğe bağlı*, varsayılan `False`) : Kendi kendine dikkat (self-attention) sırasında sorgu, anahtar, değer ve çıktı projeksiyon katmanlarında sapma (bias) kullanılıp kullanılmayacağı.

attention_dropout (`Union[float, int]`, *isteğe bağlı*, varsayılan `0.0`) : Dikkat olasılıkları için dropout oranı.

use_qk_norm (`bool`, *isteğe bağlı*, varsayılan `False`) : Dikkat mekanizmasında sorgu-anahtar normalizasyonunun kullanılıp kullanılmayacağı.

Bu, bir CohereModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Cohere modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılanlarla bir yapılandırma örneği oluşturmak, [CohereForAI/c4ai-command-r-v01](https://huggingface.co/CohereForAI/c4ai-command-r-v01) modelinin yapılandırmasına benzer bir yapılandırma üretir.

Yapılandırma nesneleri [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) sınıfından türetilir ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) belgesini okuyun.

```python
>>> from transformers import CohereModel, CohereConfig

>>> # Initializing a Cohere model configuration
>>> configuration = CohereConfig()

>>> # Initializing a model from the Cohere configuration
>>> model = CohereModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
```

## CohereTokenizer[[transformers.CohereTokenizer]]

#### transformers.CohereTokenizer[[transformers.CohereTokenizer]]

```python
transformers.CohereTokenizer(vocab: str | dict[str, int] | None = None, merges: str | list[str] | None = None, errors: str = 'replace', unk_token: str = '<UNK>', bos_token: str = '<BOS_TOKEN>', eos_token: str = '<|END_OF_TURN_TOKEN|>', pad_token: str = '<PAD>', cls_token: str = '<CLS>', sep_token: str = '<SEP>', mask_token: str = '<MASK_TOKEN>', use_default_system_prompt: bool = False, add_prefix_space: bool = False, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/cohere/tokenization_cohere.py#L45)

**Parametreler:**

vocab_file (`str`, *isteğe bağlı*) : Sözlük dosyasının yolu.

merges_file (`str`, *isteğe bağlı*) : Birleştirme dosyasının yolu.

tokenizer_file (`str`, *isteğe bağlı*) : Tokenizer'ı yüklemek için gereken her şeyi içeren [tokenizers](https://github.com/huggingface/tokenizers) dosyası (genellikle .json uzantısına sahiptir).

clean_up_tokenization_spaces (`bool`, *isteğe bağlı*, varsayılan `False`) : Çözümleme sonrası boşlukların temizlenip temizlenmeyeceğini belirtir. Temizleme işlemi, ek boşluklar gibi olası artefaktların kaldırılmasını içerir.

unk_token (`str` veya `tokenizers.AddedToken`, *opsiyonel*, varsayılan `"<UNK>"`) : Bilinmeyen token. Sözlükte olmayan bir token bir ID'ye dönüştürülemez ve bunun yerine bu token olarak ayarlanır.

bos_token (`str` veya `tokenizers.AddedToken`, *opsiyonel*, varsayılan `"<BOS_TOKEN>"`) : Ön eğitim sırasında kullanılan dizinin başlangıç tokeni. Bir dizi sınıflandırıcı tokeni olarak kullanılabilir.

eos_token (`str` veya `tokenizers.AddedToken`, *opsiyonel*, varsayılan `"<|END_OF_TURN_TOKEN|>"`) : Sıra sonu belirteci.

add_bos_token (`bool`, *isteğe bağlı*, varsayılan `True`) : Dizilerin başına `bos_token` eklenip eklenmeyeceğini belirtir.

add_eos_token (`bool`, *isteğe bağlı*, varsayılan `False`) : Dizilerin sonuna `eos_token` eklenip eklenmeyeceğini belirtir.

use_default_system_prompt (`bool`, *isteğe bağlı*, varsayılan `False`) : Cohere tokenizer için varsayılan sistem isteminin kullanılıp kullanılmayacağı.

add_prefix_space (`bool`, *isteğe bağlı*, varsayılan `False`) : Tokenizer'ın otomatik olarak bir önek boşluğu ekleyip eklemeyeceğini belirtir

vocab (`str`, `dict` veya `list`, *isteğe bağlı*) : Özel sözlük. Sağlanmazsa, sözlük vocab_file'den yüklenir.

merges (`str` veya `list[str]`, *isteğe bağlı*) : Özel birleştirme listesi. Sağlanmazsa, birleştirmeler `merges_file` içinden yüklenir.

Cohere tokenizer'ı oluşturun. Bayt düzeyinde Byte-Pair-Encoding tabanlıdır.

Bu, özellikle ByteFallback ve NFC normalizasyonunu kullanır.

```python
>>> from transformers import AutoTokenizer

>>> tokenizer = AutoTokenizer.from_pretrained("CohereForAI/c4ai-command-r-v01")
>>> tokenizer.encode("Hello this is a test")
[5, 28339, 2075, 1801, 1671, 3282]
```

`bos_token` veya `eos_token` değerlerini değiştirmek istiyorsanız, modelin başlatılması sırasında bunları belirtmekten veya `tokenizer.update_post_processor()` çağrısını yaparak son işleminin doğru şekilde gerçekleştirildiğinden emin olmaktan emin olun (aksi halde kodlanmış bir dizinin ilk ve son token değerleri doğru olmayacaktır). Daha fazla ayrıntı için [post-processors] (https://huggingface.co/docs/tokenizers/api/post-processors) belgesine göz atın.

Bu davranışın etrafından dolaşmak için bu tokenizer'ı örneklerken `add_prefix_space=True` parametresini geçebilirsiniz, ancak model bu şekilde ön eğitilmediğinden performans düşüşüne yol açabilir.

`is_split_into_words=True` ile kullanıldığında, bu tokenizer'ın `add_prefix_space=True` ile örneklenmesi gerekir.

Bu tokenizer, ana yöntemlerin çoğunu içeren [TokenizersBackend](/docs/transformers/main/tr/main_classes/tokenizer#transformers.TokenizersBackend) sınıfından devralır. Kullanıcıların bu yöntemler hakkında daha fazla bilgi için bu üst sınıfa başvurması gerekir.

#### apply_grounded_generation_template[[transformers.CohereTokenizer.apply_grounded_generation_template]]

```python
apply_grounded_generation_template(conversation: list, documents: list, citation_mode: typing.Literal['fast', 'accurate'] = 'accurate', **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/cohere/tokenization_cohere.py#L297)

**Parametreler:**

conversation (list[dict[str, str]]) : Şu ana kadarki sohbet geçmişini temsil eden, "role" ve "content" anahtarlarına sahip sözlüklerden oluşan bir liste.

documents (list[dict[str, str]) : Üretiminizi temellendirmek için belgeleri veya araç çıktıları temsil eden bir sözlük listesi. Bir belge, string'ten string'e eşlemeye sahip yarı yapılandırılmış bir sözlüktür. Yaygın alanlar `url`, `title`, `snippet` vb. şeklindedir ancak anahtarın tanımıyla uyumlu olmalıdır. Bunlar istemciye (prompt) işlenerek yerleştirilir.

citation_mode : "accurate" (modelin önce bir yanıt üretmesini, ardından alıntı aralıklarını ekleyerek yeniden yazmasını sağlar) veya "fast" (modelin alıntıları doğrudan yanıtla birlikte üretmesini sağlar). İlki daha yüksek kaliteli alıntılar sunar, ikincisi ise üretilmesi gereken token sayısını azaltır.

add_generation_prompt (bool, *optional*) : İstemin, asistan mesajının başlangıcını gösteren token(lar) ile bitirilip bitirilmeyeceğini belirtir. Modelden bir yanıt üretmek istediğinizde bu kullanışlıdır. Bu argümanın herhangi bir etki yaratabilmesi için, sohbet şablonuna (chat template) aktarılacağı ve şablon tarafından desteklenmesi gerektiğini unutmayın.

tokenize (`bool`, varsayılan `True`) : Çıktının tokenize edilip edilmeyeceğini belirtir. `False` ise çıktı bir dize olur.

padding (`bool`, varsayılan `False`) : Dizilerin maksimum uzunluğa kadar dolgu (padding) uygulanıp uygulanmayacağını belirtir. tokenize `False` ise etkisi yoktur.

truncation (`bool`, varsayılan `False`) : Dizilerin maksimum uzunlukta kırpilip kırpılmayacağını belirtir. tokenize `False` ise etkisi yoktur.

max_length (`int`, *isteğe bağlı*) : Dolgu veya kırpma için kullanılacak maksimum uzunluk (token cinsinden). tokenize `False` ise etkisi yoktur. Belirtilmezse, tokenizer'ın `max_length` özniteliği varsayılan olarak kullanılır.

return_tensors (`str` veya [TensorType](/docs/transformers/main/tr/internal/file_utils#transformers.TensorType), *opsiyonel*) : Ayarlanırsa, belirli bir çerçeveye ait tensörleri döndürür. tokenize `False` ise etkisi yoktur. Kabul edilen değerler: - `'pt'`: PyTorch `torch.Tensor` nesnelerini döndürür. - `'np'`: NumPy `np.ndarray` nesnelerini döndürür.

return_dict (`bool`, *isteğe bağlı*, varsayılan `False`) : Adlandırılmış çıktılar içeren bir sözlük döndürülüp döndürülmeyeceğini belirtir. tokenize `False` ise etkisi yoktur.

- ****tokenizer_kwargs** : Tokenizöre iletilecek ek kwargs.

**Dönüş:** `str`

Render edilmiş bir prompt dizgesi. veya tokenize=True ise: `list[int]`: Kontrol token'larını da içeren, bugüne kadar tokenize edilmiş sohbeti temsil eden token kimlikleri listesi. Bu çıktı, doğrudan veya `generate()` gibi yöntemler aracılığıyla modele iletmeye hazırdır.

Bir Command-R temelli üretim (aka RAG) istemci oluşturun.

İşlendikten sonra, istem modelden, sağlanan belgelere dayalı olarak alıntı içeren bir yanıt üretmesini ister.

Kavramsal olarak bu, `apply_chat_format` ile aynı şekilde çalışır ancak ek olarak `documents` ve `citation_mode` parametrelerini alır.

`"role"` ve `"content"` anahtarlarına sahip sözlük listesini ve modelin yanıtını dayandırmak için kullanacağı belge listesini bir istemci (prompt) dizgesine veya token kimliği listesine dönüştürür. Bu yöntem, sınıf düzeyinde belirtilen tokenizer'ın `grounded_generation_template` şablonunu kullanır. Varsayılan şablonu `grounded_generation_template` anahtar kelimesiyle (kwarg) geçersiz kılabilirsiniz ancak sonuçlarınızın kalitesi azalabilir.

Örnekler:

```python
>> tokenizer = CohereTokenizer.from_pretrained('CohereForAI/c4ai-command-r-v01')

>> # define documents:
>> documents = [
    { "title": "Tall penguins", "text": "Emperor penguins are the tallest." },
    { "title": "Penguin habitats", "text": "Emperor penguins only live in Antarctica."}
]
>> # define a conversation:
>> conversation = [
    {"role": "user", "content": "What's the biggest penguin in the world?"}
]
>> # render the prompt, ready for user to inspect, or for input into the model:
>> grounded_generation_prompt = tokenizer.apply_grounded_generation_template(conversation, documents=documents, tokenize=False, add_generation_prompt=True)
>> print(grounded_generation_prompt)
>> inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors='pt')
>> outputs = model.generate(inputs, max_new_tokens=128)
>> print(tokenizer.decode(outputs[0]))
```

#### apply_tool_use_template[[transformers.CohereTokenizer.apply_tool_use_template]]

```python
apply_tool_use_template(conversation: list, tools: list, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/cohere/tokenization_cohere.py#L186)

**Parametreler:**

conversation (list[dict[str, str]]) : Şu ana kadarki sohbet geçmişini temsil eden, "role" ve "content" anahtarlarına sahip sözlüklerden oluşan bir liste.

tools (list[Dict]) : Modelin seçim yapması için prompt'a yerleştirilecek araçların listesi. Örnek için docstring'in alt kısmına bakın. Biçim şu şekilde olmalıdır: * name (str): Çağrılacak aracın adı. Geçerli adlar yalnızca a-z, A-Z, 0-9 ve _ karakterlerini içerir ve rakamla başlayamaz. * description (str): Aracın ne yaptığını açıklayan açıklama; model, fonksiyonu ne zaman ve nasıl çağıracağına bu açıklamaya göre karar verir. * parameter_definitions (list[Dict]): Aracın girdi parametreleri. Anahtar olarak parametrenin adını, değer olarak parametre spesifikasyonunu kabul eden bir sözlük alır. Geçerli parametre adları yalnızca a-z, A-Z, 0-9 ve _ karakterlerini içerir ve rakamla başlayamaz. Parametre spesifikasyonları şu şekildedir: * description (str): Parametrenin açıklaması. * type (str): Parametrenin türü - 'str', 'bool' gibi python yerleşik veri türleri için en etkilidir. * required: boolean: Parametrenin her zaman mevcut olup olmadığını (zorunlu) belirtir. Varsayılan olarak zorunlu değildir.

add_generation_prompt (bool, *optional*) : İstemin, asistan mesajının başlangıcını gösteren token(lar) ile bitirilip bitirilmeyeceğini belirtir. Modelden bir yanıt üretmek istediğinizde bu kullanışlıdır. Bu argümanın herhangi bir etki yaratabilmesi için, sohbet şablonuna (chat template) aktarılacağı ve şablon tarafından desteklenmesi gerektiğini unutmayın.

tokenize (`bool`, varsayılan `True`) : Çıktının tokenize edilip edilmeyeceğini belirtir. `False` ise çıktı bir dize olur.

padding (`bool`, varsayılan `False`) : Dizilerin maksimum uzunluğa kadar dolgu (padding) uygulanıp uygulanmayacağını belirtir. tokenize `False` ise etkisi yoktur.

truncation (`bool`, varsayılan `False`) : Dizilerin maksimum uzunlukta kırpilip kırpılmayacağını belirtir. tokenize `False` ise etkisi yoktur.

max_length (`int`, *isteğe bağlı*) : Dolgu veya kırpma için kullanılacak maksimum uzunluk (token cinsinden). tokenize `False` ise etkisi yoktur. Belirtilmezse, tokenizer'ın `max_length` özniteliği varsayılan olarak kullanılır.

return_tensors (`str` veya [TensorType](/docs/transformers/main/tr/internal/file_utils#transformers.TensorType), *opsiyonel*) : Ayarlanırsa, belirli bir çerçeveye ait tensörleri döndürür. tokenize `False` ise etkisi yoktur. Kabul edilen değerler: - `'pt'`: PyTorch `torch.Tensor` nesnelerini döndürür. - `'np'`: NumPy `np.ndarray` nesnelerini döndürür.

return_dict (`bool`, *isteğe bağlı*, varsayılan `False`) : Adlandırılmış çıktılar içeren bir sözlük döndürülüp döndürülmeyeceğini belirtir. tokenize `False` ise etkisi yoktur.

- ****tokenizer_kwargs** : Tokenizöre iletilecek ek kwargs.

**Dönüş:** `str`

Render edilmiş bir prompt dizgesi. veya tokenize=True ise: `list[int]`: Kontrol token'larını da içeren, bugüne kadar tokenize edilmiş sohbeti temsil eden token kimlikleri listesi. Bu çıktı, doğrudan veya `generate()` gibi yöntemler aracılığıyla modele iletmeye hazırdır.

Command-R araç kullanımını için bir istem oluşturun.

İşlendikten sonra, istem modelden, kullanıcının taleplerini yerine getirmeye yardımcı olmak için kullanıcı tarafından sağlanan bir araç kümesi üzerinde gerçekleştirilecek eylemlerin bir listesini üretmesini ister.

Kavramsal olarak bu, `apply_chat_format` ile aynı şekilde çalışır ancak ek bir `tools` parametresi alır.

`"role"` ve `"content"` anahtarlarına sahip sözlüklerden oluşan bir liste biçimindeki sohbeti ve modelin kullanabileceği araçların listesini bir istemci (prompt) dizgesine veya token kimlikleri listesine dönüştürür. Bu yöntem, sınıf düzeyinde belirtilen tokenizer'ın `default_tool_use_template` şablonunu kullanır. Varsayılan şablonu `tool_use_template` anahtar kelimesiyle (kwarg) geçersiz kılabilirsiniz ancak sonuçlarınızın kalitesi azalabilir.

Örnekler:

```python
>> tokenizer = CohereTokenizer.from_pretrained("CohereForAI/c4ai-command-r-v01")
>> tools = [
    {
        "name": "internet_search",
        "description": "Returns a list of relevant document snippets for a textual query retrieved from the internet",
        "parameter_definitions": {
            "query": {
                "description": "Query to search the internet with",
                "type": "str",
                "required": True,
            }
        },
    },
    {
        "name": "directly_answer",
        "description": "Calls a standard (un-augmented) AI chatbot to generate a response given the conversation history",
        "parameter_definitions": {},
    },
]
>> conversation = [
    {"role": "user", "content": "What's the biggest penguin in the world?"},
]
>> # Render the prompt, ready for user to inspect, or for input into the model
>> prompt = tokenizer.apply_tool_use_template(conversation, tools=tools, tokenize=False, add_generation_prompt=True)
>> print(prompt)
>> inputs = tokenizer.encode(grounded_generation_prompt, add_special_tokens=False, return_tensors='pt')
>> outputs = model.generate(inputs, max_new_tokens=128)
>> print(tokenizer.decode(outputs[0]))
[
    {
        "tool_name": "internet_search",
        "parameters": {
            "query": "biggest penguin in the world"
        }
    }
]
```

## CohereModel[[transformers.CohereModel]]

#### transformers.CohereModel[[transformers.CohereModel]]

```python
transformers.CohereModel(config: CohereConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/cohere/modeling_cohere.py#L360)

**Parametreler:**

config ([CohereConfig](/docs/transformers/main/tr/model_doc/cohere#transformers.CohereConfig)) : Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için [from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine göz atın.

Üzerinde herhangi bir özel head olmadan ham gizli durumları (hidden-states) üreten çıplak Cohere Model.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel) sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

#### forward[[transformers.CohereModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/cohere/modeling_cohere.py#L377)

**Parametreler:**

input_ids (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yoksayılır. İndeksler [AutoTokenizer](/docs/transformers/main/tr/model_doc/auto#transformers.AutoTokenizer) kullanılarak elde edilebilir. Ayrıntılar için [PreTrainedTokenizer.encode()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) ve [PreTrainedTokenizer.__call__()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) yöntemlerine bakın. [Girdi kimlikları (input IDs) nedir?](../glossary#input-ids)

attention_mask (`torch.Tensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Dolgu (padding) token indekslerinde dikkat (attention) işleminin uygulanmamasını sağlayan maske. `[0, 1]` aralığında seçilen maske değerleri:  - **maske uygulanmayan** tokenlar için 1, - **maske uygulanan** tokenlar için 0.  [Dikkat maskeleri nelerdir?](../glossary#attention-mask)

position_ids (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Girdi dizisi token'larının konum gömme (position embeddings) içindeki konum indeksleri. `[0, config.n_positions - 1]` aralığında seçilir.  [Konum kimlikleri (position IDs) nedir?](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`, *isteğe bağlı*) : Sıralı çözümlemeyi hızlandırmak için kullanılabilen, önceden hesaplanmış gizli durumlar (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle, `use_cache=True` veya `config.use_cache=True` olduğunda, çözümlemenin önceki bir aşamasında modelin döndürdüğü `past_key_values` değerlerinden oluşur. Girdi olarak yalnızca [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneği kabul edilir, bkz. [kv cache kılavuzu](https://huggingface.co/docs/transformers/en/kv_cache). `past_key_values` geçirilmezse, varsayılan olarak [DynamicCache](/docs/transformers/main/tr/internal/generation_utils#transformers.DynamicCache) başlatılır. Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak verecektir. `past_key_values` kullanılıyorsa, kullanıcının, bu modele geçmiş anahtar-değer durumları verilmemiş olan, yalnızca işlenmemiş `input_ids` değerlerini (şekli `(batch_size, unprocessed_length)` olan) girmesi beklenir; bunun yerine, şekli `(batch_size, sequence_length)` olan tüm `input_ids` değerleri girilmez.

inputs_embeds (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) : `input_ids` parametresini iletmek yerine, gömülü bir temsil doğrudan iletmeyi tercih edebilirsiniz. Bu, `input_ids` indekslerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisine kıyasla daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.

use_cache (`bool`, *isteğe bağlı*) : `True` olarak ayarlanırsa, `past_key_values` anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. `past_key_values`).

**Dönüş:** [BaseModelOutputWithPast](/docs/transformers/main/tr/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPast) veya `tuple(torch.Tensor)`

[BaseModelOutputWithPast](/docs/transformers/main/tr/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPast) veya bir `torch.Tensor` demeti (`return_dict=False` geçirildiğinde veya `config.return_dict=False` olduğunda); yapılandırma ([CohereConfig](/docs/transformers/main/tr/model_doc/cohere#transformers.CohereConfig)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[CohereModel](/docs/transformers/main/tr/model_doc/cohere#transformers.CohereModel) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

- **last_hidden_state** (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`) -- Modelin son katmanının çıktısındaki gizli durumlar dizisi.

  `past_key_values` kullanılırsa, yalnızca `(batch_size, 1, hidden_size)` biçimindeki dizilerin son gizli durumu (hidden-state) çıktı olarak verilir.
- **past_key_values** (`Cache`, *isteğe bağlı*, `use_cache=True` geçirildiğinde veya `config.use_cache=True` olduğunda döndürülür) -- Bir [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneğidir. Daha fazla ayrıntı için [kv cache kılavuzumuza](https://huggingface.co/docs/transformers/en/kv_cache) bakın.

  Sıralı çözümlemeyi hızlandırmak için (bkz. `past_key_values` girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler ve isteğe bağlı olarak `config.is_encoder_decoder=True` ise cross-attention bloklarındaki anahtar ve değerler) içerir.
- **hidden_states** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren, `(batch_size, sequence_length, hidden_size)` biçiminde bir demet.

  Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- **attentions** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `torch.Tensor` (her katman için bir tane) içeren bir tuple, şekli `(batch_size, num_heads, sequence_length, sequence_length)`.

  Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

## CohereForCausalLM[[transformers.CohereForCausalLM]]

#### transformers.CohereForCausalLM[[transformers.CohereForCausalLM]]

```python
transformers.CohereForCausalLM(config: CohereConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/cohere/modeling_cohere.py#L434)

**Parametreler:**

config ([CohereConfig](/docs/transformers/main/tr/model_doc/cohere#transformers.CohereConfig)) : Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için [from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine göz atın.

Nedensel dil modellemesi için Cohere Modeli.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel) sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

#### forward[[transformers.CohereForCausalLM.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = None, logits_to_keep: typing.Union[int, torch.Tensor] = 0, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/cohere/modeling_cohere.py#L451)

**Parametreler:**

input_ids (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yoksayılır. İndeksler [AutoTokenizer](/docs/transformers/main/tr/model_doc/auto#transformers.AutoTokenizer) kullanılarak elde edilebilir. Ayrıntılar için [PreTrainedTokenizer.encode()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) ve [PreTrainedTokenizer.__call__()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) yöntemlerine bakın. [Girdi kimlikları (input IDs) nedir?](../glossary#input-ids)

attention_mask (`torch.Tensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Dolgu (padding) token indekslerinde dikkat (attention) işleminin uygulanmamasını sağlayan maske. `[0, 1]` aralığında seçilen maske değerleri:  - **maske uygulanmayan** tokenlar için 1, - **maske uygulanan** tokenlar için 0.  [Dikkat maskeleri nelerdir?](../glossary#attention-mask)

position_ids (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Girdi dizisi token'larının konum gömme (position embeddings) içindeki konum indeksleri. `[0, config.n_positions - 1]` aralığında seçilir.  [Konum kimlikleri (position IDs) nedir?](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`, *isteğe bağlı*) : Sıralı çözümlemeyi hızlandırmak için kullanılabilen, önceden hesaplanmış gizli durumlar (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle, `use_cache=True` veya `config.use_cache=True` olduğunda, çözümlemenin önceki bir aşamasında modelin döndürdüğü `past_key_values` değerlerinden oluşur. Girdi olarak yalnızca [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneği kabul edilir, bkz. [kv cache kılavuzu](https://huggingface.co/docs/transformers/en/kv_cache). `past_key_values` geçirilmezse, varsayılan olarak [DynamicCache](/docs/transformers/main/tr/internal/generation_utils#transformers.DynamicCache) başlatılır. Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak verecektir. `past_key_values` kullanılıyorsa, kullanıcının, bu modele geçmiş anahtar-değer durumları verilmemiş olan, yalnızca işlenmemiş `input_ids` değerlerini (şekli `(batch_size, unprocessed_length)` olan) girmesi beklenir; bunun yerine, şekli `(batch_size, sequence_length)` olan tüm `input_ids` değerleri girilmez.

inputs_embeds (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) : `input_ids` parametresini iletmek yerine, gömülü bir temsil doğrudan iletmeyi tercih edebilirsiniz. Bu, `input_ids` indekslerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisine kıyasla daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.

labels (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Maskeli dil modelleme kaybını hesaplamak için etiketler. Endeksler `[0, ..., config.vocab_size]` aralığında olmalı ya da -100 olmalı (`input_ids` docstring'ine bakın). Endeksleri `-100` olarak ayarlanan tokenlar yok sayılır (maskelenir), kayıp yalnızca `[0, ..., config.vocab_size]` aralığında etiketlere sahip tokenlar için hesaplanır.

use_cache (`bool`, *isteğe bağlı*) : `True` olarak ayarlanırsa, `past_key_values` anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. `past_key_values`).

logits_to_keep (`Union[int, torch.Tensor]`, *isteğe bağlı*, varsayılan `0`) : `int` ise, son `logits_to_keep` token için logits hesaplanır. `0` ise, tüm `input_ids` için logits hesaplanır (özel durum). Üretim için yalnızca son token'ın logits'ine ihtiyaç duyulur ve bunların yalnızca o token için hesaplanması bellek tasarrufu sağlar; bu, uzun diziler veya büyük sözlük boyutu için oldukça önemli hale gelir. `torch.Tensor` ise, dizi uzunluğu boyutunda tutulacak indekslere karşılık gelen 1B olmalıdır. Bu, paketlenmiş tensor biçimini (batch ve dizi uzunluğu için tek boyut) kullanırken faydalıdır.

**Dönüş:** [CausalLMOutputWithPast](/docs/transformers/main/tr/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) veya `tuple(torch.Tensor)`

[CausalLMOutputWithPast](/docs/transformers/main/tr/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) veya `torch.Tensor` bir demeti (`return_dict=False` geçirildiğinde veya `config.return_dict=False` olduğunda), yapılandırmaya ([CohereConfig](/docs/transformers/main/tr/model_doc/cohere#transformers.CohereConfig)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[CohereForCausalLM](/docs/transformers/main/tr/model_doc/cohere#transformers.CohereForCausalLM) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

- **loss** (`torch.Tensor`, şekli `(1,)`, *isteğe bağlı*, `labels` sağlandığında döndürülür) -- Dil modelleme kaybı (sonraki token tahmini için).
- **logits** (`torch.Tensor`, şekli `(batch_size, sequence_length, config.vocab_size)`) -- Dil modelleme başlığının tahmin puanları (SoftMax öncesi her sözlük jetonu için puanlar).
- **past_key_values** (`Cache`, *isteğe bağlı*, `use_cache=True` geçirildiğinde veya `config.use_cache=True` olduğunda döndürülür) -- Bir [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneğidir. Daha fazla ayrıntı için [kv cache kılavuzumuza](https://huggingface.co/docs/transformers/en/kv_cache) bakın.

  Sıralı çözümlemeyi hızlandırmak için (bkz. `past_key_values` girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler) içerir.
- **hidden_states** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren, `(batch_size, sequence_length, hidden_size)` biçiminde bir demet.

  Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- **attentions** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `torch.Tensor` (her katman için bir tane) içeren bir tuple, şekli `(batch_size, num_heads, sequence_length, sequence_length)`.

  Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

Örnek:

```python
>> from transformers import AutoTokenizer, CohereForCausalLM

>> model = CohereForCausalLM.from_pretrained("CohereForAI/c4ai-command-r-v01")
>> tokenizer = AutoTokenizer.from_pretrained("CohereForAI/c4ai-command-r-v01")

>> prompt = "Hey, are you conscious? Can you talk to me?"
>> inputs = tokenizer(prompt, return_tensors="pt")

>> # Generate
>> generate_ids = model.generate(inputs.input_ids, max_length=30)
>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"Hey, are you conscious? Can you talk to me?\nI'm not conscious, but I can talk to you."
```

