一,使用python调取大模型api
1,获取api_key
获取api_key 在各个大模型的官网中获取。
2,设置api_key
方式一:
在系统环境中可直接执行python代码:这里以deepseek为例
import os
os.environ["DEEPSEEK_API_KEY"] = "your_api_key"
方式二:
但在jupyter环境中无权直接修改系统环境变量
因此在文件同目录下创建 '.env'文件
DEEPSEEK_API_KEY=your_api_key
注意这里可以不用引号
3,使用本地环境的api_key
上一步中采用方式一:
则直接使用:
print(os.getenv("DEEPSEEK_API_KEY")) # 或
os.environ["DEEPSEEK_API_KEY"]
方式二:
from dotenv import load_dotenv
load_dotenv() # 加载 .env 文件
api_key = os.getenv("DEEPSEEK_API_KEY")
3,python调用llm
在python中调用llm通用方式:(可参考不同大模型api文档)
在openai类可直接查看系统环境变量“openai_api_key”,因此可以直接使用
from openai import OpenAIclient = OpenAI()
但如果我们调用其他模型,可能也支持以上调用方式,但需要将base_url换做第三方大模型的api_url(可以从大模型api文档找到)。
这里以deepseek为例:
from openai import OpenAIclient = OpenAI(api_key=api_key, base_url="https://api.deepseek.com")def get_completion(prompt, model="deepseek-chat"):messages = [{"role": "system", "content": "You are a helpful assistant"},{"role": "user", "content": prompt}]response = client.chat.completions.create(model=model,messages=messages,stream=False)return response.choices[0].message.contentget_completion("What is 1+1?")
以上,为python默认大模型使用方法。
但langchain中封装了model的调用。与上文方法相似,但也有些许不同。
二,langchain中使用model
1,llm调用
一般的,langchain中调用model使用如下方式:
以deepseek为例:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="deepseek-chat",temperature=0.0,max_tokens=None,timeout=None,max_retries=2,base_url="https://api.deepseek.com",api_key=api_key,
)
环境变量同上。
但langchain中包含有对deepseek api的封装。
https://python.langchain.com/api_reference/deepseek/chat_models/langchain_deepseek.chat_models.ChatDeepSeek.html#langchain_deepseek.chat_models.ChatDeepSeek
因此对于deepseek而言也可以采用如下方式:
from langchain_deepseek import ChatDeepSeekllm = ChatDeepSeek(model = "deepseek-chat"
)
2,prompt使用
例如:
prompt = """ 翻译下面这段文字并使用 {style} 这种风格。\text:``` {text} ```
"""style = """ 中文 \用一种十分随意轻松活泼的日常口语
"""text = """Democratize AI innovation with the world’s \most trusted open ecosystem \for data science and \AI development.
"""
prompt被分为了以下几个部分(解耦的过程)。
这是因为,一部分prompt应该能够提前被定义。如system_prompt (代码中的prompt)。
另一部分会在后续修改或定义。或者为user_prompt。 如代码中的style和text。
因此prompt完整代码如下:
from langchain.prompts import ChatPromptTemplateprompt_template = ChatPromptTemplate.from_template(prompt)
messages = prompt_template.format_messages(style = style,text = text)
先定义system_prompt 后将system_prompt中的输入变量输入进去。
messages实际上就是拼接后的结果:
调用大模型:
response = llm.invoke(messages)response.content
运行结果: