如何通过Codex API获取代码片段的Token与Embedding嵌入向量
基于OpenAI Python库调用Codex API获取代码Embedding结果实现方案
前置依赖配置
- 安装官方openai Python库,执行安装命令:
pip install openai - 在代码中完成API密钥初始化,配置语句:
openai.api_key = "你的OpenAI API密钥"
核心调用实现
你之前调用code-davinci-001引擎的Completion接口用于代码生成,获取代码嵌入结果需要调用同属Codex技术线的Embedding接口,直接传入任意格式正确的Python代码块作为输入即可,参考实现代码如下:
import openai # 初始化API密钥 openai.api_key = "替换为你自己的API密钥" # 示例输入:乘法练习Python代码块,可替换为任意待处理Python代码 target_code_block = """ import random def multiplication_practice(): factor1 = random.randint(1, 9) factor2 = random.randint(1, 9) print(f"请计算:{factor1} × {factor2} = ?") input_result = int(input("输入计算结果:")) if input_result == factor1 * factor2: print("答案正确!") else: print(f"答案错误,正确结果为{factor1 * factor2}") if __name__ == "__main__": multiplication_practice() """ # 调用Codex嵌入接口 api_response = openai.Embedding.create( model="code-search-ada-code-001", input=target_code_block ) # 提取最终嵌入向量结果 code_embedding_result = api_response["data"][0]["embedding"] # 结果验证输出 print(f"生成嵌入向量总长度:{len(code_embedding_result)}") print(f"嵌入向量前10个维度值示例:{code_embedding_result[:10]}")
关键参数说明
model:代码嵌入场景固定使用Codex线专属代码嵌入模型,适配代码语义特征提取,和你之前使用的code-davinci-001补全模型能力互补input:接收字符串格式的Python代码块,传入时保持代码原有缩进、换行格式即可,无需额外特殊处理;批量处理多段代码时可传入字符串列表,接口会按顺序返回每段代码对应的嵌入结果- 返回结构中
api_response["data"][0]["embedding"]为对应输入代码的一维浮点型语义向量,可直接用于代码相似度匹配、代码分类、代码检索等下游任务
注意事项
- Embedding接口和Completion接口为独立接口,前者用于生成语义向量,后者用于内容生成/补全,不要混淆调用
- 传入代码总长度不要超过对应模型的最大上下文窗口限制,超长代码需要提前做截断或分块处理
- 若调用时出现权限报错,检查你的API密钥是否有Codex系列模型的访问权限
内容的提问来源于stack exchange,提问作者Exploring
相关产品推荐
相关产品推荐

