■ loads 함수를 사용해 JSON 파일에서 RunnableSequence 객체를 만드는 방법을 보여준다. ※ OPENAI_API_KEY 환경 변수 값은 .env 파일에 정의한다. ▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
import json import os from dotenv import load_dotenv from langchain_core.prompts import ChatPromptTemplate from langchain_openai import ChatOpenAI from langchain_core.load import dumps from langchain_core.load import loads load_dotenv() chatPromptTemplate = ChatPromptTemplate.from_messages( [ ("system", "Translate the following text into {language} :"), ("user" , "{text}") ] ) chatOpenAI = ChatOpenAI( model = "gpt-4", temperature = 0.7 ) runnableSequence1 = chatPromptTemplate | chatOpenAI jsonString = dumps(runnableSequence1, pretty = True) with open("chain.json", "w") as textIOWrapper: json.dump(jsonString, textIOWrapper) with open("chain.json", "r") as textIOWrapper: runnableSequence2 = loads(json.load(textIOWrapper), secrets_map = {"OPENAI_API_KEY" : os.environ["OPENAI_API_KEY"]}) try: response = runnableSequence2.invoke( { "language": "Korean", "text" : "I am a student" } ) print("번역 결과 :", response.content) except Exception as exception: print(f"오류 발생 : {str(exception)}") |
더 읽기
■ dump 함수를 사용해 RunnableSequence 객체에서 JSON 파일을 생성하는 방법을 보여준다. ※ OPENAI_API_KEY 환경 변수 값은 .env 파일에 정의한다. ▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
import json from dotenv import load_dotenv from langchain_core.prompts import ChatPromptTemplate from langchain_openai import ChatOpenAI from langchain_core.load import dumps load_dotenv() chatPromptTemplate = ChatPromptTemplate.from_messages( [ ("system", "Translate the following into {language} :"), ("user" , "{text}") ] ) chatOpenAI = ChatOpenAI(model = "gpt-4o") runnableSequence = chatPromptTemplate | chatOpenAI jsonString = dumps(runnableSequence, pretty = True) with open("chain.json", "w") as textIOWrapper: json.dump(jsonString, textIOWrapper) |
더 읽기
■ 대용량 CSV 파일을 병합하는 방법을 보여준다. ※ CSV 파일에 헤더 라인이 있어야 합니다. ※ 병합하는 CSV 파일은 동일한 헤더 라인을 갖고
더 읽기
■ TextLoader 클래스를 사용해 복수 텍스트 파일 문서를 로드하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
from langchain_community.document_loaders import TextLoader TextLoaderList = [ TextLoader("paul_graham_essay.txt" , encoding = "utf-8"), TextLoader("state_of_the_union.txt", encoding = "utf-8") ] documentList = [] for textLoader in TextLoaderList: documentList.extend(textLoader.load()) |
※ pip install langchain-community 명령을 실행했다.
■ TextLoader 클래스의 생성자에서 encoding 인자를 사용해 UTF-8 인코딩 파일을 로드하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
from langchain_community.document_loaders import TextLoader textLoader = TextLoader("paul_graham_essay.txt" , encoding = "utf-8") |
※ pip install langchain-community
더 읽기
■ PDF 파일을 분할하는 방법을 보여준다. ▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
import os from PyPDF2 import PdfReader from PyPDF2 import PdfWriter def splitPDFFile(sourceFilePath, targetDirectoryPath, pageCountPerFile): pdfReader = PdfReader(sourceFilePath) totalPageCount = len(pdfReader.pages) if not os.path.exists(targetDirectoryPath): os.makedirs(targetDirectoryPath) fileNameWithoutExtension = os.path.splitext(os.path.basename(sourceFilePath))[0] for i in range(0, totalPageCount, pageCountPerFile): pdfWriter = PdfWriter() for page in range(i, min(i + pageCountPerFile, totalPageCount)): pdfWriter.add_page(pdfReader.pages[page]) targetFileName = f"{fileNameWithoutExtension}_part_{i//pageCountPerFile + 1}.pdf" targetFilePath = os.path.join(targetDirectoryPath, targetFileName) with open(targetFilePath, "wb") as bufferedWriter: pdfWriter.write(bufferedWriter) print(f"Created : {targetFileName}") print("PDF splitting completed.") sourceFilePath = "d:\\Practical C# Charts and Graphics.pdf" targetDirectoryPath = "d:\\Practical C# Charts and Graphics" pageCountPerFile = 100 splitPDFFile(sourceFilePath, targetDirectoryPath, pageCountPerFile) |
▶ requirements.txt
※ pip install pypdf2 명령을 실행했다.
■ TextLoader 클래스의 load 메소드를 사용해 텍스트 파일을 로드하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
from langchain_community.document_loaders import TextLoader textLoader = TextLoader("state_of_the_union.txt") documentList = textLoader.load() |
■ TextLoader 클래스를 사용해 텍스트 로더를 만드는 방법을 보여준다. ▶ 예제 코드 (PY)
|
from langchain_community.document_loaders import TextLoader textLoader = TextLoader("state_of_the_union.txt") |
■ StorageFolder 클래스의 GetItemsAsync 메소드를 사용해 폴더/파일 리스트를 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System; using System.Collections.Generic; using Windows.Storage; StorageFolder storageFolder = KnownFolders.PicturesLibrary; IReadOnlyList<IStorageItem> storageItemList = await storageFolder.GetItemsAsync(); |
■ DataReader 클래스의 ReadBytes 메소드를 사용해 바이트 배열을 읽는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
using Windows.Storage; using Windows.Storage.Streams; StorageFolder storageFolder = await StorageFolder.GetFolderFromPathAsync(@"D:\"); StorageFile storageFile = await storageFolder.GetFileAsync("sample.txt"); using IRandomAccessStream randomAccessStream = await storageFile.OpenReadAsync(); IInputStream inputStream = randomAccessStream.GetInputStreamAt(0); using DataReader dataReader = new DataReader(inputStream); await dataReader.LoadAsync((uint)randomAccessStream.Size); byte[] byteArray = new byte[randomAccessStream.Size]; dataReader.ReadBytes(byteArray); |
■ DataReader 클래스의 LoadAsync 메소드를 사용해 메모리로 데이터를 로드하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using Windows.Storage; using Windows.Storage.Streams; StorageFolder storageFolder = await StorageFolder.GetFolderFromPathAsync(@"D:\"); StorageFile storageFile = await storageFolder.GetFileAsync("sample.txt"); using IRandomAccessStream randomAccessStream = await storageFile.OpenReadAsync(); IInputStream inputStream = randomAccessStream.GetInputStreamAt(0); using DataReader dataReader = new DataReader(inputStream); await dataReader.LoadAsync((uint)randomAccessStream.Size); |
■ DataReader 클래스에서 IInputStream 객체를 사용해 객체를 만드는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using Windows.Storage; using Windows.Storage.Streams; StorageFolder storageFolder = await StorageFolder.GetFolderFromPathAsync(@"D:\"); StorageFile storageFile = await storageFolder.GetFileAsync("sample.txt"); using IRandomAccessStream randomAccessStream = await storageFile.OpenReadAsync(); IInputStream inputStream = randomAccessStream.GetInputStreamAt(0); using DataReader dataReader = new DataReader(inputStream); |
■ IRandomAccessStream 인터페이스의 GetInputStreamAt 메소드를 사용해 IInputStream 객체를 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using Windows.Storage; using Windows.Storage.Streams; StorageFolder storageFolder = await StorageFolder.GetFolderFromPathAsync(@"D:\"); StorageFile storageFile = await storageFolder.GetFileAsync("sample.dat"); using IRandomAccessStream randomAccessStream = await storageFile.OpenReadAsync(); IInputStream inputStream = randomAccessStream.GetInputStreamAt(0); |
■ StorageFile 클래스의 OpenReadAsync 메소드를 사용해 IRandomAccessStream 객체를 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using Windows.Storage; using Windows.Storage.Streams; StorageFolder storageFolder = await StorageFolder.GetFolderFromPathAsync(@"D:\"); StorageFile storageFile = await storageFolder.GetFileAsync("sample.dat"); using IRandomAccessStream randomAccessStream = await storageFile.OpenReadAsync(); |
■ IStorageItem 인터페이스의 IsOfType 메소드를 사용해 파일 여부를 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using Windows.Storage; StorageFolder storageFolder = await StorageFolder.GetFolderFromPathAsync(@"D:\"); IStorageItem storageItem = await storageFolder.TryGetItemAsync("sample.dat").AsTask().ConfigureAwait(false); bool isFile = storageItem.IsOfType(StorageItemTypes.File); |
■ StorageFolder 클래스의 TryGetItemAsync 메소드를 사용해 IAsyncOperation<IStorageItem> 객체를 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using Windows.Foundation; using Windows.Storage; StorageFolder storageFolder = await StorageFolder.GetFolderFromPathAsync(@"D:\"); IAsyncOperation<IStorageItem> storageItemAsyncOperation = storageFolder.TryGetItemAsync("sample.dat"); |
■ StorageFileHelper 클래스의 ReadBytesAsync 확장 메소드를 사용해 이진 파일에서 바이트 배열을 읽는 방법을 보여준다. ※ CommunityToolkit.WinUI.Helpers 네임스페이스를 사용하려면 CommunityToolkit.WinUI 누겟을 설치한다. ▶
더 읽기
■ FileIO 클래스의 WriteBytesAsync 정적 메소드를 사용해 이진 파일에 바이트 배열을 쓰는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using Windows.Storage; StorageFolder storageFolder = await StorageFolder.GetFolderFromPathAsync(@"D:\"); StorageFile storageFile = await storageFolder.CreateFileAsync("sample.dat", CreationCollisionOption.ReplaceExisting); byte[] contentByteArray = BitConverter.GetBytes(1000L); await FileIO.WriteBytesAsync(storageFile, contentByteArray); |
■ StorageFolder 클래스의 GetFolderFromPathAsync 정적 메소드를 사용해 특정 디렉토리 경로의 StorageFolder 객체를 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using Windows.Storage; StorageFolder storageFolder = await StorageFolder.GetFolderFromPathAsync(@"D:\"); |
■ 언패키지드(Unpackaged) 모드에서 로컬 설정 값을 저장하거나 구하는 방법을 보여준다. ※ 언패키지드(UnPackaged) 모드에서는 ApplicationData 클래스의 Current 정적 속성을 사용해 로컬 설정을 처리할
더 읽기
■ ApplicationDataContainer 클래스의 Values 속성을 사용해 로컬 설정 값을 저장하거나 구하는 방법을 보여준다. (PACKAGED) ▶ 예제 코드 (C#)
|
LocalSettingHelper.SaveLocalSettingItem("exampleSetting", "Hello, World!"); string value = LocalSettingHelper.ReadLocalSettingItem("exampleSetting"); |
▶ LocalSettingHelper.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
using Windows.Storage; /// <summary> /// 로컬 설정 헬퍼 /// </summary> public static class LocalSettingHelper { //////////////////////////////////////////////////////////////////////////////////////////////////// Field ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region Field /// <summary> /// 애플리케이션 데이터 컨테이너 /// </summary> private static ApplicationDataContainer _applicationDataContainer; #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Static #region 생성자 - LocalSettingHelper() /// <summary> /// 생성자 /// </summary> static LocalSettingHelper() { _applicationDataContainer = ApplicationData.Current.LocalSettings; } #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Public #region 로컬 설정 항목 저장하기 - SaveLocalSettingItem(key, value) /// <summary> /// 로컬 설정 항목 저장하기 /// </summary> /// <param name="key">키</param> /// <param name="value">값</param> public static void SaveLocalSettingItem(string key, string value) { _applicationDataContainer.Values[key] = value; } #endregion #region 로컬 설정 항목 읽기 - ReadLocalSettingItem(key) /// <summary> /// 로컬 설정 항목 읽기 /// </summary> /// <param name="key">키</param> /// <returns>설정 값</returns> public static string ReadLocalSettingItem(string key) { if(_applicationDataContainer.Values.TryGetValue(key, out object value)) { return value as string; } else { return null; } } #endregion } |
■ ApplicationDataContainer 클래스의 Values 속성을 사용해 로컬 설정 값을 구하는 방법을 보여준다. (PACKAGED) ▶ 예제 코드 (C#)
|
using Windows.Storage; ApplicationDataContainer applicationDataContainer = ApplicationData.Current.LocalSettings; if(applicationDataContainer.Values.TryGetValue("exampleSetting", out object value)) { string exampleSettingValue = value as string; // 다음 작업을 처리한다. } else { // exampleSetting 값이 없는 경우 처리한다. } |
■ ApplicationDataContainer 클래스의 Values 속성을 사용해 로컬 설정 값을 추가하는 방법을 보여준다. (PACKAGED) ▶ 예제 코드 (C#)
|
using Windows.Storage; ApplicationDataContainer applicationDataContainer = ApplicationData.Current.LocalSettings; applicationDataContainer.Values["exampleSetting"] = "Hello, World!"; |
■ ApplicationData 클래스의 LocalSettings 속성을 사용해 로컬 설정의 ApplicationDataContainer 객체를 구하는 방법을 보여준다. (PACKAGED) ▶ 예제 코드 (C#)
|
using Windows.Storage; ApplicationDataContainer applicationDataContainer = ApplicationData.Current.LocalSettings; |
■ StorageFile 클래스의 GetFileFromPathAsync 정적 메소드를 사용해 특정 파일 경로의 StorageFile 객체를 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System; using Windows.Storage; StorageFile storageFile = await StorageFile.GetFileFromPathAsync("d:\\sample.txt"); |