C语言中的Trigraph sequences

本文介绍了ANSI C标准中鲜为人知的Trigraph序列概念及其实现细节,详细列举了所有有效的Trigraph序列及其对应的字符替换规则,并通过示例展示了如何进行Trigraph序列的替换。

以下对Trigraph sequences的描述摘自ANSI C标准,一般很少提到和用到。

2.2.1.1 Trigraph sequences

   All occurrences in a source file of the following sequences of
three characters (called trigraph sequences /5/)are replaced with the
corresponding single character.

         ??=      #
         ??(      [
         ??/      \
         ??)      ]
         ??'      ^
         ??<      {
         ??!      |
         ??>      }
         ??-      ~

No other trigraph sequences exist.  Each ? that does not begin one of
the trigraphs listed above is not changed.

Example

   The following source line

         printf("Eh???/n");

becomes (after replacement of the trigraph sequence ??/ )

         printf("Eh?\n");

`stop_sequences` 通常用于控制模型生成的输出,它可以是一个字符串或字符串列表,用来阻止模型继续生成 token,是控制大模型响应长度和结构的一种方法。以下是不同场景下 `stop_sequences` 的使用示例: ### 在调用 API 时使用 假设使用某个大语言模型的 API,并且该 API 支持 `stop_sequences` 参数。以下是一个伪代码示例: ```python import some_api_client # 初始化 API 客户端 client = some_api_client.Client(api_key="your_api_key") # 定义输入文本和停止序列 input_text = "生成一个不超过 10 个项的列表:" stop_sequences = ["11"] # 调用 API 生成文本 response = client.generate_text(input_text, stop_sequences=stop_sequences) print(response) ``` 在这个示例中,向模型提供了输入文本,并指定了停止序列 `"11"`。当模型生成的文本中出现 `"11"` 时,生成过程将停止。 ### 在模型生成方法中使用 如果是直接使用模型的生成方法,也可以设置 `stop_sequences`。以下是一个简单的示例(假设使用的模型支持该参数): ```python from transformers import AutoModelForCausalLM, AutoTokenizer # 加载模型和分词器 model = AutoModelForCausalLM.from_pretrained("gpt2") tokenizer = AutoTokenizer.from_pretrained("gpt2") # 定义输入文本和停止序列 input_text = "生成一个不超过 10 个项的列表:" stop_sequences = ["11"] # 将输入文本转换为输入 ID input_ids = tokenizer.encode(input_text, return_tensors="pt") # 生成文本 output = model.generate( input_ids, max_length=50, stop_sequences=stop_sequences ) # 将生成的 ID 转换为文本 generated_text = tokenizer.decode(output[0], skip_special_tokens=True) print(generated_text) ``` 在这个示例中,使用 `transformers` 库加载了一个预训练的语言模型和分词器。通过 `generate` 方法生成文本,并指定了停止序列 `"11"`。当生成的文本中出现 `"11"` 时,生成过程将停止。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值