一,使用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
運行結果: