# %%
import os
from dotenv import load_dotenv
load_dotenv(override=True)
# %%
from azure.identity import ClientSecretCredential, get_bearer_token_provider
tenant_id = os.environ.get('AZURE_TENANT_ID')
client_id = os.environ.get('AZURE_CLIENT_ID')
client_secret = os.environ.get('AZURE_CLIENT_SECRET')
credential = ClientSecretCredential(
tenant_id=tenant_id,
client_id=client_id,
client_secret=client_secret
)
# %%
scopes = "https://cognitiveservices.azure.com/.default"
azure_ad_token_provider = get_bearer_token_provider(credential, scopes)
# %%
from langchain_openai import AzureChatOpenAI
azure_endpoint=os.environ.get('AZURE_OPENAI_ENDPOINT')
azure_deployment = os.environ.get("AZURE_OPENAI_DEPLOYMENT_NAME")
api_version = os.environ.get("API_VERSION")
temperature = 0
max_tokens = 4096
llm = AzureChatOpenAI(
azure_endpoint=azure_endpoint,
api_version=api_version,
azure_deployment=azure_deployment,
azure_ad_token_provider=azure_ad_token_provider,
temperature=temperature,
max_tokens=max_tokens,
)
# %%
from langchain_core.prompts import PromptTemplate
template = """# 指示:
与えられた文脈をもとに質問に回答してください。
# 文脈:
{context}
# 質問:
{question}
# 回答:
"""
prompt_template = PromptTemplate.from_template(template=template)
# %%
import pandas as pd
filepath = "RAG-Evaluation-Dataset-JA.csv"
df = pd.read_csv(filepath_or_buffer=filepath)
df
# %%
df.dropna(subset=['context'], inplace=True)
df
# %%
import csv
generated_text = []
for index, row in df.iterrows():
print(index)
context = row.context
question = row.question
try:
response = llm.invoke(input=prompt_template.format(context=context, question=question))
generated_text.append(response.content)
except Exception as e:
generated_text.append("")
len(generated_text)
# %%
df['generated_text'] = generated_text
df.to_csv(f"RAG-Evaluation-Dataset-JA-generated_text.csv", index=False, quoting=csv.QUOTE_ALL)